SQL 服务器索引帮助。如何加速 WHERE 和 ORDER BY
SQL Server Index Help. How to speed up both WHERE and ORDER BY
谢谢你帮助我。我有从中选择的索引视图。我创建了一个非聚集索引,但查询有 WHERE 谓词和 ORDER BY 要求。如果我将 WHERE 中的列放在索引的第一位,那么 ORDER BY 就会很慢,反之亦然。我能找到的最好的是混合,但速度并不完全是我想要的。
例如是这样的:
SELECT apple, banana
FROM indexViewFood
WHERE pickingDate BETWEEN '09/01/2016' AND '10/02/2016'
AND aid IN (1,2,3,4)
AND bid IN (11,12,13,14)
ORDER BY apple, banana
现在,我在 pickingDate 上有索引,然后是 apple:
CREATE INDEX ix_food ON (pickingDate, apple) INCLUDE (banana, aid, bid)
索引查找有 3% 的成本,而排序有 90% 的成本。如果我放一个 (aid, pickingDate) 的索引,执行时间会更长。
查询必须按这些名称排序。真正的查询是从多个表中选择左连接。所有额外的数据一定会减慢排序操作。当前运行时间是五分钟。
我可以尝试其他索引组合吗?当涉及到 WHERE 和 ORDER By 组合时,我可以尝试其他方法吗?再次感谢
我问题下的每个人的建议都有帮助
谢谢你帮助我。我有从中选择的索引视图。我创建了一个非聚集索引,但查询有 WHERE 谓词和 ORDER BY 要求。如果我将 WHERE 中的列放在索引的第一位,那么 ORDER BY 就会很慢,反之亦然。我能找到的最好的是混合,但速度并不完全是我想要的。
例如是这样的:
SELECT apple, banana
FROM indexViewFood
WHERE pickingDate BETWEEN '09/01/2016' AND '10/02/2016'
AND aid IN (1,2,3,4)
AND bid IN (11,12,13,14)
ORDER BY apple, banana
现在,我在 pickingDate 上有索引,然后是 apple:
CREATE INDEX ix_food ON (pickingDate, apple) INCLUDE (banana, aid, bid)
索引查找有 3% 的成本,而排序有 90% 的成本。如果我放一个 (aid, pickingDate) 的索引,执行时间会更长。
查询必须按这些名称排序。真正的查询是从多个表中选择左连接。所有额外的数据一定会减慢排序操作。当前运行时间是五分钟。
我可以尝试其他索引组合吗?当涉及到 WHERE 和 ORDER By 组合时,我可以尝试其他方法吗?再次感谢
我问题下的每个人的建议都有帮助