postgresql - 如何提高sql查询速度并快速获取记录
问题描述
我的数据库中有大量记录。我尝试使用 where 条件运行 SQL 查询。我得到了数据,我也显示了记录数。大约需要21秒。我需要减少时间。
Sql 查询
select * from sample_rank where company_id = 1
记录数
166270266
我在数据库中添加了索引。但它并没有快速获取数据。如何修复它以及如何更改查询
解决方案
假设根据您的评论,您只需要选择表中的两列:
SELECT col1, col2 FROM sample_rank WHERE company_id = 1;
那么下面的覆盖指数可能是你可以在这里做的最好的:
CREATE INDEX idx ON sample_rank (company_id, col1, col2);
上面的索引完全覆盖了整个查询,也就是说,如果使用,你的 SQL 引擎可以单独使用索引来满足整个查询计划。我将“if”加粗,因为根据数据的基数,上述索引可能无法帮助查询运行得更快。例如,如果您只有两个company_id
值,1 和 2,并且每个值都有 50% 的记录,那么您的 SQL 引擎可能会决定全表扫描甚至比使用索引更快。正如评论中所建议的,EXPLAIN
在您的实际查询上运行会显示更多信息。
推荐阅读
- reactjs - 如何将我的 Docker React 容器配置为仅在需要时安装模块?
- c - VS code c 编程,我该如何修复-Makefile:2: *** 缺少分隔符。停止。?
- amazon-web-services - 跨 AWS 账户的 DynamoDB 复制
- javascript - 在搜索文本时隐藏 h4
- python - 在重新加载不同目录中以编程方式导入的文件时找不到 ModuleSpec
- python-3.x - 如何与龙卷风 IOLoop 同时运行长时间运行的阻塞功能
- r - 不应该在 org 模式下以 R 代码块打印的输出
- javascript - 将 Select 的选项替换为 Checkbox
- html - 如何使用 Div 在页面上格式化 2 个不同的表格?
- android-studio - Android Studio 不显示 Flutter 源代码