我有一个sql查询从一个非常非常慢的视图中拉出,我知道这可能是视图的错误;但是我不能改变视图。我有这个查询,想看看是否有人对如何优化它有建议,以便我可以让它更快。
SELECT COUNT(id) AS recordnum, firstname, lastname
FROM view
WHERE personid=123 AND transactiondate BETWEEN '9/1/2012' AND '9/30/2012'
GROUP BY firstname, lastname发布于 2012-10-13 01:24:33
SELECT COUNT(id) AS recordnum, firstname, lastname
FROM view
WHERE personid=123 AND transactiondate BETWEEN '9/1/2012' AND '9/30/2012'
GROUP BY firstname, lastname考虑在(personid)和/或(transactiondate)和/或(名字,姓氏)上的索引,无论哪个是最具选择性的。也就是说,如果personid将从100,000条记录中选择1条,那么personid上的索引通常就足够了。如果personid+transactiondate的组合为您提供了这种选择性,那么可以在这两列上创建一个复合索引。
如果这是您的单个执行次数最多的查询,或者如果您只是足够频繁地运行它,那么您还可以将所有列都包含到索引中,例如
create index ix_basetable_1 on basetable_inside_view(personid,transactiondate)
INCLUDE(firstname,lastname,id)https://stackoverflow.com/questions/12864014
复制相似问题