这是查询:
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