我有以下查询
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?添加太多索引有什么问题吗?
答案 0 :(得分:0)
单个查询只能在其从中读取的每个表上使用索引之一。无论您在表上创建多少索引,此查询都只会使用其中一个。
因此,您需要一个索引来覆盖查询中过滤的所有列,并包括返回的列。