假设我有一个名为table1的表。它有5列A,B,C,D,E。
A列是唯一的,不能有空值,所以我将A列设置为主。
create table Table1
(
A INT PRIMARY KEY,
B INT NOT NULL,
C DATETIME NOT NULL,
D VARCHAR(2) NOT NULL,
E DATETIME NOT NULL
)
表1拥有超过500万条记录,并且随着时间的推移将会增长。应用程序始终基于列B进行搜索,列B可以具有重复的值。
每当我在where子句中使用B列时,选择查询就会非常慢。
我可以想到两种方法:
处理此问题的正确方法是什么。
答案 0 :(得分:0)
这实际上取决于您在此表上使用的查询,您可以在A列和B列上执行非聚簇索引,或者在A和B上执行聚簇索引(复合主键)。包含列中的A和B。
CREATE NONCLUSTERED INDEX MyIndex
ON myTable(A)
INCLUDE(B);
尝试各种情况,并为每个查询建立查询计划。您将看到哪种索引最适合您的表。