我有这个复杂的查询,我需要优化。 没有索引需要20ms,我试着添加一些索引,它更好,现在我有4ms。 但我没有任何经验。你能帮我把它变得更快吗?如何优化索引sql查询
SELECT COUNT(*) FROM(
SELECT user_id FROM times
INNER JOIN tags ON times.user_id = tags.tag_id
INNER JOIN users ON tags.user_nr = users.nr
WHERE (times.time < 1597313)
AND (times.run_id="118")
AND (times.user_id != 109330258)
AND (times.user_id != 0)
AND (times.time != 0)
AND (times.cell != 1)
AND (users.category_id="4")
GROUP BY user_id HAVING count(*) == 1
UNION
SELECT user_id FROM times
INNER JOIN tags ON times.user_id = tags.tag_id
INNER JOIN users ON tags.user_nr = users.nr
WHERE (times.run_id="118")
AND (times.user_id != 109330258)
AND (times.user_id != 0)
AND (times.time != 0) AND (times.cell != 1)
AND (users.category_id="4")
GROUP BY user_id HAVING count(*) > 1
)
我增加了3个索引。
- 表标签 - 标签识别
- 表倍 - user_id说明
- 表用户 - NR
是MySQL还是SQLite?你标记为 – pickypg
“更好,现在我需要4ms”。现在多少钱?你在这些表中有多少数据?你是如何确定要添加哪些索引的?查询计划(解释)是什么样的? – Oded
其sqlite(标记删除),现在我有4毫秒(编辑) – Meloun