我有這個複雜的查詢,我需要優化。 沒有索引需要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