我有一個包含以下各列的表格:有沒有更快的方法來執行下面的SQL請求?
id, name, domain, added, is_verified
1, "First Google", "google.com", DATE(), 1
2, "Second Google", "google.com", DATE(), 1
3, "Third Google", "google.com", DATE(), 1
4, "First disney", "disney.com", DATE(), 1
5, "Second disney", "disney.com", DATE(), 1
6, "Third disney", "disney.com", DATE(), 0
7, "First example", "example.com", DATE(), 0
8, "Second example", "example.com", DATE(), 0
並提出以下要求:
SELECT domain FROM mytable WHERE domain NOT IN
(SELECT domain FROM mytable WHERE is_verified = 1 GROUP BY domain)
GROUP BY domain ORDER BY added DESC;
這一要求背後的主要想法是讓所有的domain
不具有is_verified
真的。
在上面的例子中,這隻會返回一次「example.com」。
該請求很好,但需要時間來執行(我有成千上萬的條目)。有沒有其他方式可以使這個請求更快更高效?
性能問題應該包括EXPLAIN分析和有關表的大小,指數,當前時間的一些信息表現,慾望時間等。慢是一個相對術語,我們需要真正的價值來比較。 MySQL也請讀[How-to-Ask](http://stackoverflow.com/help/how-to-ask) – e4c5
在我看來,你的表沒有被正確地規範化,因爲多行跨越一個單獨的邏輯實體(取決於該域)。另外,如果任何行有'is_verified = 1',只有最新的'added'入口計數或是一個域驗證? – Smutje