首页 > 解决方案 > 如何提高sql查询速度并快速获取记录

问题描述

我的数据库中有大量记录。我尝试使用 where 条件运行 SQL 查询。我得到了数据,我也显示了记录数。大约需要21秒。我需要减少时间。

Sql 查询

select * from sample_rank where company_id = 1

记录数

166270266

我在数据库中添加了索引。但它并没有快速获取数据。如何修复它以及如何更改查询

标签: postgresql

解决方案


假设根据您的评论,您只需要选择表中的列:

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在您的实际查询上运行会显示更多信息。


推荐阅读