Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để tạo chỉ mục cho một cột chuỗi trong sql?

Nếu chuỗi của bạn dài hơn 900 byte, thì nó không thể là khóa chỉ mục, bất kể đó là độ dài thay đổi hay cố định.

Một ý tưởng là ít nhất sẽ làm cho các tìm kiếm có chọn lọc hơn bằng cách thêm một cột được tính toán. ví dụ:

CREATE TABLE dbo.Strings
(
  -- other columns,
  WholeString VARCHAR(4000),
  Substring AS (CONVERT(VARCHAR(10), WholeString) PERSISTED
);
CREATE INDEX ss ON dbo.Strings(Substring);

Bây giờ khi tìm kiếm một hàng để cập nhật, bạn có thể nói:

WHERE s.Substring = LEFT(@string, 10)
AND s.WholeString = @string;

Điều này ít nhất sẽ giúp trình tối ưu hóa thu hẹp tìm kiếm xuống các trang chỉ mục nơi kết hợp chính xác có nhiều khả năng xuất hiện nhất. Bạn có thể muốn thử nghiệm với độ dài đó vì nó phụ thuộc vào số lượng chuỗi tương tự bạn có và điều gì sẽ giúp trình tối ưu hóa loại bỏ một trang tốt nhất. Bạn cũng có thể muốn thử nghiệm với việc bao gồm một số hoặc tất cả các cột khác trong ss chỉ mục, có hoặc không sử dụng INCLUDE (liệu điều này có hữu ích hay không sẽ thay đổi rất nhiều tùy thuộc vào các yếu tố khác nhau, chẳng hạn như truy vấn cập nhật của bạn làm gì khác, tỷ lệ đọc / ghi, v.v.).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Try_Convert dành cho SQL Server 2008 R2

  2. Dự án cơ sở dữ liệu để thả cơ sở dữ liệu trước khi triển khai?

  3. Tại sao các hàm có giá trị vô hướng của SQL Server hoạt động chậm hơn?

  4. 3 cách chuyển đổi HEX sang INT trong SQL Server (T-SQL)

  5. Nhận Ngày trong năm từ một ngày trong SQL Server (T-SQL)