小编bnu*_*sey的帖子

由于临时文件而导致查询性能下降?

这是查询:

SELECT "products".* 
FROM "products"
WHERE (status > 100) 
AND "products"."above_revenue_average" = 't' 
AND ("products"."category_id" NOT IN (5))
ORDER BY "products"."start_date" DESC 
Run Code Online (Sandbox Code Playgroud)

我在status和上有一个索引start_date

每次从我的应用程序运行查询时,我都会在日志中得到以下信息:

SELECT "products".* 
FROM "products"
WHERE (status > 100) 
AND "products"."above_revenue_average" = 't' 
AND ("products"."category_id" NOT IN (5))
ORDER BY "products"."start_date" DESC 
Run Code Online (Sandbox Code Playgroud)

我相信这个临时文件的创建是性能缓慢的原因。

运行一个EXPLAIN ANALYZE我得到以下结果:

[WHITE] temporary file:
path "pg_tblspc/16386/PG_9.3_201306121/pgsql_tmp/pgsql_tmp2544.0", size 37093376 
Query: SELECT "products".* FROM "products"  WHERE (status > 100) 
AND "products"."above_revenue_average" = 't' 
AND ("products"."category_id" NOT IN (5))  ORDER …
Run Code Online (Sandbox Code Playgroud)

postgresql performance configuration index-tuning query-performance

9
推荐指数
1
解决办法
8802
查看次数