Tôi có một bảng Com_Main
có chứa cột CompanyName nvarchar(250)
. Nó có chiều dài trung bình của 19, chiều dài max = 250.Chỉ mục cột được tính
Để cải thiện hiệu suất Tôi muốn thêm một cột tính left20_CompanyName
nắm giữ 20 ký tự đầu tiên của CompanyName
:
alter table Com_main
add left20_CompanyName as LEFT(CompanyName, 20) PERSISTED
Sau đó, tôi tạo Index trên cột này :
create index ix_com_main_left20CompanyName
on Com_main (LEFT20_CompanyName)
Vì vậy, khi tôi sử dụng
select CompanyName from Com_Main
where LEFT20_CompanyName LIKE '122%'
nó sử dụng chỉ số nonclustered này, nhưng khi truy vấn giống như:
select CompanyName from Com_Main
where CompanyName LIKE '122%'
Sử dụng toàn bộ bảng quét và không sử dụng chỉ mục này.
Vì vậy, câu hỏi:
Có thể làm cho SQL Server sử dụng chỉ mục này trên cột có thể tính toán trong truy vấn cuối cùng không?
Có, tôi nghĩ bạn đúng, nhưng mục tiêu chính là kiểm tra xem có thể sử dụng cột được tính làm chỉ mục hay không. Tất nhiên tôi đã tạo chỉ mục trên cột CompanyName. Tôi có vẻ như MS SQL không hỗ trợ một phần lập chỉ mục của các cột VARCHAR, vì vậy đó là câu trả lời. –