如何优化SQL Server表上的索引

时间:2018-12-28 16:32:43

标签: sql sql-server performance indexing

我有以下查询

SELECT 
    vbShape, XMIN, YMIN, XMAX, YMAX,  GlobalID
FROM
    (SELECT * 
     FROM features 
     WHERE vbShape IS NOT NULL) A
WHERE 
    XMIN <= -13036746.0212491 AND XMAX >= -13037147.3156476 AND 
    YMIN <= 3988531.90850796 AND YMAX >= 3988130.61410953

XMIN,XMAN,YMIN和YMAX都是浮点列。

我需要此查询尽可能快地运行。每毫秒至关重要。 GlobalID是主键。我应该为该表添加什么样的索引?我目前在表上为XMIN,XMAX,YMIN和YMAX字段定义了4个非聚集索引。我是否还应该定义一个索引来包含所有字段?还是应该添加两个索引?一个用于XMIN / XMAX,一个用于YMIN / YMAX?添加太多索引有什么问题吗?

1 个答案:

答案 0 :(得分:0)

单个查询只能在其从中读取的每个表上使用索引之一。无论您在表上创建多少索引,此查询都只会使用其中一个。

因此,您需要一个索引来覆盖查询中过滤的所有列,并包括返回的列。