我目前正在進行一些mysql查詢的項目。項目中的所有mysql查詢都是由其他開發人員完成的。不管怎麼說,我跟他已經做了以下的查詢有點混亂:如何提高這個mysql查詢處理的速度
SELECT MIN(s_date) AS s_date,
client_id
FROM tb1
WHERE flag = 1
AND client_id NOT IN (
SELECT DISTINCT client_id
FROM tb1
WHERE flag = 0
)
GROUP BY client_id;
查詢的第一部分,如果標誌= 1,第二部分是檢查不檢查是(標誌= 0)。我認爲這是多餘的,因爲旗= 1,它不能是0.我不明白該查詢的邏輯。而且我認爲NOT IN有點慢(我的數據庫需要2秒)。
請解釋一下這個查詢意味着什麼,以及如何簡化和改進它。
使用EXPLAIN另一種創造性的選擇查看你的查詢使用了什麼索引,然後考慮調整你的索引 – 2014-10-07 16:16:14
你也可能發現使用JOIN查詢比使用子查詢更有效 – 2014-10-07 16:16:49
@Mihai在不知道tb1的實際結構的情況下,我不能說對於某些;但最常見的做法是將'id'作爲主鍵,'client_id'將是一個外鍵 – 2014-10-07 16:19:36