sql - 在大表上运行缓慢的 SQL 查询
问题描述
我在 sql server 上运行以下查询。
select * from table1 where added_on in ('2018-09-26','2018-10-02') and uid=309
我的表包含超过 3000 万条记录。但上述查询将导致少于 200 条记录,因为它需要 30-40 秒。
我在表上有聚集和非聚集索引。
主键的聚集索引和 added_on(日期字段)的非聚集索引
还有什么我可以用来放在桌子上以加快结果时间的吗
解决方案
您需要一个涵盖您正在搜索的两个字段的索引。试试这个:
CREATE INDEX IX_Composite ON [table1] ([uid], [added_on]);
推荐阅读
- machine-learning - 保存机器学习模型时,它会保存在训练期间发现的模式吗
- python - 查找子字符串并在它之前获取子字符串
- java - 使用 spark/java 的 mod 函数
- javascript - 为什么更新的状态没有反映在事件监听器中:React Native、Hooks
- flutter - Flutter:行数改变后PaginatedDataTable不会回到第一页
- html - justify-content 效果不佳,无法在标题末尾进行导航
- styled-components - 反应:地图没有给出预期的结果
- spring - Spring restTemplate 超时而不抛出异常
- apache-spark - 数据库的 Pyspark/jupyter 笔记本显示问题
- python - Pandas Read_Parquet NaN 错误:ValueError:无法将浮点 NaN 转换为整数