Câu hỏi này là về hiệu quả của kỹ thuật lập chỉ mục SQL Server. Tôi nghĩ nó được gọi là "giao điểm".
Tôi đang làm việc với một ứng dụng SQL Server (2008) hiện có một số vấn đề về hiệu năng và độ ổn định. Các nhà phát triển đã làm một số điều kỳ lạ với lập chỉ mục. Tôi đã không thể có được điểm chuẩn kết luận về các vấn đề này, và tôi cũng không thể tìm thấy bất kỳ tài liệu thực sự tốt nào trên mạng.
Có nhiều cột có thể tìm kiếm trên một bảng. Các nhà phát triển đã tạo một chỉ mục cột duy nhất trên MACHI các cột có thể tìm kiếm. Lý thuyết là SQL Server sẽ có thể kết hợp (giao nhau) từng chỉ mục này để truy cập hiệu quả vào bảng trong hầu hết các trường hợp. Dưới đây là một ví dụ đơn giản (bảng thực có nhiều trường hơn):
CREATE TABLE [dbo].[FatTable](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[col1] [nchar](12) NOT NULL,
[col2] [int] NOT NULL,
[col3] [varchar](2000) NOT NULL, ...
CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable] ( [col1] ASC )
CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC )
select * from fattable where col1 = '2004IN'
select * from fattable where col1 = '2004IN' and col2 = 4
Tôi nghĩ rằng nhiều chỉ mục cột được nhắm mục tiêu cho tiêu chí tìm kiếm tốt hơn nhiều, nhưng tôi có thể sai. Tôi đã thấy các kế hoạch truy vấn cho thấy SQL Server đang thực hiện khớp băm trên hai lần tìm kiếm chỉ mục. Có lẽ điều này có ý nghĩa khi bạn không biết làm thế nào bảng được tìm kiếm? Cảm ơn.