您在postgresql中执行sql时遇到一个问题。
我有类似的查询:
从myTable ORDER BY A,B选择A,B,lower(C);
没有ORDER BY子句,我在11毫秒内得到结果,但是按顺序,检索相同结果需要4分钟以上。
这些列包含大量数据(1000000或更多),并且包含大量重复数据 谁能建议我解决?
谢谢
答案 0 :(得分:3)
但是按顺序排序,检索相同结果需要4分钟以上。
udo
已经解释了如何使用索引加速排序,这可能就是你想要的方式。
但另一种解决方案(可能)是增加work_mem
变量。除非您同时运行许多查询,否则这几乎总是有益的。
当排序大型结果集(不适合您的work_mem设置)时,PostgreSQL会转向基于磁盘的慢速排序。如果你允许它使用更多的内存,它将会快速进行内存中的排序。
NB!每当您询问有关PostgreSQL性能的问题时,您应该发布查询的EXPLAIN ANALYZE
输出,以及Postgres的版本。
答案 1 :(得分:1)
您是否尝试过在A,B上添加索引?
这应该可以加快速度。
答案 2 :(得分:0)
您是否尝试使用DISTINCT消除重复项?这应该比按语句排序更有效。