如何提高sql server查询响应时间

时间:2013-12-24 12:25:47

标签: sql sql-server sql-server-2008

我有一个包含以下结构的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
  ) 

该表有两个索引。

  1. 带有键SEQ_ID
  2. 的聚簇索引
  3. 非唯一非聚集索引:我遵循了四个复合索引

    一个。 SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_DATETIME

    SRM_CLIENTS_SEQ_ID, SRM_CLIENT_ENTITIES_SEQ_ID, SRM_CLIENT_ENTITY_ATTRIBTUES_SEQ_ID, ATTRIBUTE_DECIMAL

    ℃。 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

  4. 问题在于,当我对此表执行简单查询时,它不会在可接受的时间内返回结果。

    查询:

    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秒

    由于

1 个答案:

答案 0 :(得分:7)

您拥有的索引对此查询无用。

您需要一个带有前导列SRM_CLIENT_ENTITY_ATTRIBUTES_SEQ_ID, ATTRIBUTE_DECIMAL(按任意顺序)才能获得搜索。

可能您可能希望INCLUDE其他表列使索引覆盖并避免查找。这取决于谓词的选择性和总体工作负载平衡。