我有一个包含6000万条记录的表,其结构如下
CREATE TABLE dbo.cus_pivot_non_unique_indexes
(
SEQ_ID BIGINT,
SRM_CLIENT_ENTITIES_SEQ_ID BIGINT,
CUS_ENTITY_DATA_SEQ_ID BIGINT,
SRM_CLIENT_ENTITY_ATTRIBUTES_SEQ_ID BIGINT,
ATTRIBUTE_DATETIME DATETIME,
ATTRIBUTE_DECIMAL DECIMAL(18, 2),
ATTRIBUTE_STRING NVARCHAR(255),
ATTRIBUTE_BOOLEAN CHAR(1),
SRM_CLIENTS_SEQ_ID BIGINT
) 该表有两个索引。
SEQ_ID的聚集索引SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_DATETIME
b. SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_DECIMAL
c. SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_STRING
d. SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_BOOLEAN问题是,当我对该表执行简单查询时,它不会在可接受的时间内返回结果。
查询:
SELECT CUS_ENTITY_DATA_SEQ_ID
FROM dbo.cus_pivot_non_unique_indexes
WHERE srm_client_entity_attributes_seq_id = 51986
AND attribute_decimal = 4150196 执行时间:2秒
谢谢
发布于 2013-12-24 12:29:17
您所拥有的索引对此查询没有用处。
您需要一个带有前导列的SRM_CLIENT_ENTITY_ATTRIBUTES_SEQ_ID, ATTRIBUTE_DECIMAL (按任何顺序排列)才能得到一个查找。
可能您希望INCLUDE其他表列,以使索引覆盖和避免查找。这取决于谓词的选择性和总体工作负载平衡。
https://stackoverflow.com/questions/20760924
复制相似问题