您好我在postgresql中执行sql时遇到了一个问题。“订购”sql中的性能下降
我有这样一个类似的查询:从myTable的ORDER BY A,B
选择A,B,低级(C);
无ORDER BY子句,我在11毫秒内得到结果,但按顺序排列,花了4分多钟才找回相同的结果。
这些列包含大量数据(1000000或更多)并且有大量重复数据 任何人都可以提出我的解决方案吗?
谢谢
您好我在postgresql中执行sql时遇到了一个问题。“订购”sql中的性能下降
我有这样一个类似的查询:从myTable的ORDER BY A,B
选择A,B,低级(C);
无ORDER BY子句,我在11毫秒内得到结果,但按顺序排列,花了4分多钟才找回相同的结果。
这些列包含大量数据(1000000或更多)并且有大量重复数据 任何人都可以提出我的解决方案吗?
谢谢
但按顺序,花了4分多钟才找回相同的结果。
udo
已经解释了如何使用索引来加速排序,这可能是您想要去的方式。
但另一个解决方案(可能)是增加work_mem
变量。这几乎总是有益的,除非你有许多查询同时运行。
当对不适合work_mem设置的较大结果集进行排序时,PostgreSQL采取缓慢的基于磁盘的排序。如果你允许它使用更多的内存,它会进行快速的内存排序。
注意!每当您提出有关PostgreSQL性能的问题时,您都应该为您的查询发布EXPLAIN ANALYZE
输出,以及Postgres的版本。
你试过把一个指数A,B?
这应该加快速度。
你是否尝试使用DISTINCT消除重复?这应该比通过声明的订单更有效率。
但是DISTINCT不一定会对结果进行排序 – 2011-03-29 12:01:39
通常,由于ORDER BY需要对结果进行排序,所以速度较慢。有些东西(如索引)可能会有所帮助。你究竟用ORDER BY来达到什么目的? – NPE 2011-03-29 12:00:54