【发布时间】:2018-10-10 16:09:37
【问题描述】:
我在 sql server 上运行以下查询。
select * from table1 where added_on in ('2018-09-26','2018-10-02') and uid=309
我的表包含超过 3000 万条记录。但是上面的查询将导致少于 200 条记录,因为它需要 30-40 秒。
我的表上有聚集索引和非聚集索引。
主键的聚集索引和added_on(日期字段)的非聚集索引
还有什么我可以用来放在桌子上以加快结果时间
【问题讨论】:
-
如果英语有 crore 的定义,好的。如果没有 - 是的。请用英语。请添加查询计划。此外,如果您删除并使用 2 个正常条件,行为会改变吗? WITH 查询计划。还有什么硬件?
-
3 千万 == 30,000,000 行?无论如何,在 [uid] 和 [add_on] 上创建一个索引:CREATE INDEX IX_Composite ON [table1] ([uid], [add_on]);
-
尝试改变
where子句的顺序,去掉*并在uid,added_on上创建索引。 -
@TomTom 根据谷歌,
Crore is a unit in Indian numerical system which is equivalent to 10 million(感谢 OP,我今天学到了一个新词)。 -
根据网站规则,这里是英文而不是印度。
标签: sql sql-server optimization