Tôi muốn chuyển đổi một bảng lưu trữ thành một bảng lưu trữ cột bằng cách tạo một chỉ mục cột lưu trữ cụm. Có ba cột trong bảng: id, thời gian và giá trị.
Bảng được sắp xếp theo id và thời gian trước khi tạo chỉ mục cột; tuy nhiên, sau khi tạo chỉ mục cột, thứ tự hàng bị rối tung. Tôi nghĩ rằng nó có thể là do sự song song và thêm maxdop = 1
tùy chọn, nhưng điều đó không khắc phục được vấn đề. Bất cứ ai có thể giúp tôi với điều này?
Dưới đây là mã tạo bảng và chỉ mục:
-- creating rowstore table
drop table if exists tab1_rstore
select id, time, value
into tab1_rstore
from tab0
order by id_loan, period
option(maxdop 1)
-- creating clustered index on rowstore table
create clustered index idx on tab1_rstore (id,time)
-- creating columnstore table
select *
into tab1_cstore
from tab1_rstore
option(maxdop 1)
-- comparing the first two rows from these two tables
select top 2 *
from tab1_rstore
select top 2 *
from tab1_cstore
Ảnh chụp màn hình kết quả truy vấn:
-- creating clustered columnstore index
create clustered columnstore index idx on tab1_cstore
with (maxdop = 1)
-- comparing the top two rows again
select top 2 *
from tab1_rstore
select top 2 *
from tab1_cstore
Ảnh chụp màn hình kết quả truy vấn với chỉ mục cột:
Tôi hiểu rằng thứ tự của các hàng được xác định bởi thuật toán nén và chúng tôi không thể làm gì về nó, xem giới hạn và hạn chế trong tài liệu ở đây với trích dẫn sau:
Không thể bao gồm các từ khóa ASC hoặc DESC để sắp xếp chỉ mục. Các chỉ mục của cột được sắp xếp theo các thuật toán nén. Sắp xếp sẽ loại bỏ nhiều lợi ích hiệu suất.
Tôi đang sử dụng SQL Server 2016 Developer Edition trên Windows 10 64bit.