对于具有数百万条记录的表,查询非常慢。什么是正确的处理方法

时间:2019-06-12 19:46:02

标签: sql-server

假设我有一个名为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列时,选择查询就会非常慢。

我可以想到两种方法:

  1. 在B列上创建非聚集索引。
  2. 使用A和B列作为组合主键。

处理此问题的正确方法是什么。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您在此表上使用的查询,您可以在A列和B列上执行非聚簇索引,或者在A和B上执行聚簇索引(复合主键)。包含列中的A和B。

CREATE NONCLUSTERED INDEX MyIndex 
ON myTable(A)  
INCLUDE(B);  

尝试各种情况,并为每个查询建立查询计划。您将看到哪种索引最适合您的表。