我對「IS NULL」MySQL檢查表示懷疑。我有這2個查詢。第一個在大約300秒內運行。第二個運行不到1秒!爲什麼這個mysql查詢(使用null檢查)比另一個更慢?
慢查詢:
SELECT count(distinct(u.id))
FROM ips_usuario AS u
JOIN ips_fatura AS f
ON ((u.id = f.ips_usuario_id) OR
(u.ips_usuario_id_titular IS NOT NULL AND
u.ips_usuario_id_titular = f.ips_usuario_id));
快速查詢:
SELECT count(distinct(u.id))
FROM ips_usuario AS u
JOIN ips_fatura AS f
ON ((u.id = f.ips_usuario_id) OR
(u.ips_usuario_id_titular = f.ips_usuario_id));
所有連接條件使用外鍵索引列。表ips_usuario有大約20,000條記錄,表ips_fatura有大約500.000條記錄。
這真是奇怪的結果,你確定它不是因爲頁面緩存? – Arnial
是的,我確定! –