具有多个聚合函数的 SqLite 查询速度很慢 - 需要帮助来优化查询
SqLite query with multiple aggregation functions are slow - need help to optimize the query
我需要帮助优化此 sqlite 查询(来自 php 的查询 运行):
select max(aid) as aid, max(mid) as mid ,max(tid) as tid,
max(m.id) as m_mid, max(t.id) as m_tid, max(a.id) as m_aid
from dview, T_DATA t, M_DATA m, A_DATA a
table 名称前缀(例如 a.id
)未访问的字段来自 dview,其他来自指定的 tables。
运行 在 sqlite 中,每个 table 中有数百条记录需要超过一分钟。
我知道索引不会修复,因为只有在执行单个聚合时,sqlite 才会处理它们。我能做什么?
您的 FROM
子句:
from dview, T_DATA t, M_DATA m, A_DATA a
创建 4 个数据集的所有行组合的笛卡尔积,并生成最终完成聚合的巨大数据集。
实际上,您的代码等同于:
SELECT MAX(aid) AS aid, MAX(mid) AS mid, MAX(tid) AS tid,
(SELECT MAX(id) FROM M_DATA) AS m_mid,
(SELECT MAX(id) FROM T_DATA) AS m_tid,
(SELECT MAX(id) FROM A_DATA) AS m_aid
FROM dview;
哪个应该表现得更好。
我需要帮助优化此 sqlite 查询(来自 php 的查询 运行):
select max(aid) as aid, max(mid) as mid ,max(tid) as tid,
max(m.id) as m_mid, max(t.id) as m_tid, max(a.id) as m_aid
from dview, T_DATA t, M_DATA m, A_DATA a
table 名称前缀(例如 a.id
)未访问的字段来自 dview,其他来自指定的 tables。
运行 在 sqlite 中,每个 table 中有数百条记录需要超过一分钟。
我知道索引不会修复,因为只有在执行单个聚合时,sqlite 才会处理它们。我能做什么?
您的 FROM
子句:
from dview, T_DATA t, M_DATA m, A_DATA a
创建 4 个数据集的所有行组合的笛卡尔积,并生成最终完成聚合的巨大数据集。
实际上,您的代码等同于:
SELECT MAX(aid) AS aid, MAX(mid) AS mid, MAX(tid) AS tid,
(SELECT MAX(id) FROM M_DATA) AS m_mid,
(SELECT MAX(id) FROM T_DATA) AS m_tid,
(SELECT MAX(id) FROM A_DATA) AS m_aid
FROM dview;
哪个应该表现得更好。