在PostgreSQL中优化SQL查询(选择正确的索引)
我有一个SQL查询,我想优化以改进结果 查询:在PostgreSQL中优化SQL查询(选择正确的索引),sql,database,postgresql,Sql,Database,Postgresql,我有一个SQL查询,我想优化以改进结果 查询: SELECT twm.id AS id, twm.fecha_id AS fecha, twm.nombre_busqueda AS busquedas, twm.tipo_mencion_leyenda AS tipo_mencion, twm.sentimiento AS sentimiento, CASE WHEN sum(twm.menciones) IS null
SELECT
twm.id AS id,
twm.fecha_id AS fecha,
twm.nombre_busqueda AS busquedas,
twm.tipo_mencion_leyenda AS tipo_mencion,
twm.sentimiento AS sentimiento,
CASE
WHEN sum(twm.menciones) IS null THEN 0
ELSE sum(twm.menciones)
END AS menciones,
twm.tipo_source_nombre AS sources,
twm.tipo_de_site_leyenda AS typeof
FROM
dashboards_tablaagregadawebdiaria twm
WHERE
twm.corporativa = FALSE
AND twm.cuenta_id = 115
AND twm.tipo_buzz_id = 1
AND twm.fecha_id >= 20150831
AND twm.fecha_id <= 20150929
GROUP BY
twm.id,fecha,
busquedas,
tipo_mencion,
sentimiento,
sources,
typeof
有没有关于缩短查询时间的帮助或建议??我已经创建了以下索引,但还不够
CREATE INDEX dashboards_tablaagregadawebdiaria_cuenta_id
ON dashboards_tablaagregadawebdiaria
USING btree
(cuenta_id);
谢谢您的查询中只有一个带有where子句的表。最好的索引是复合索引:
create index idx_dashboards_tablaagregadawebdiaria_4 on
dashboards_tablaagregadawebdiaria(cuenta_id, tipo_buzz_id, corporativa,
fecha_id);
你能把explain-analyze的输出添加到你的问题中吗?我只是添加explain-analyze。57毫秒相当快。你需要多快?
CREATE INDEX dashboards_tablaagregadawebdiaria_cuenta_id
ON dashboards_tablaagregadawebdiaria
USING btree
(cuenta_id);
create index idx_dashboards_tablaagregadawebdiaria_4 on
dashboards_tablaagregadawebdiaria(cuenta_id, tipo_buzz_id, corporativa,
fecha_id);