- 以下3個查詢中的哪一個會更快?爲什麼?
- 我在我的應用程序中使用了很多其他連接的查詢。那麼有什麼辦法可以衡量他們的速度嗎?如果是的話,你能提一下它是什麼嗎?
$q = "SELECT COUNT(books.id) FROM books
INNER JOIN books_type ON books.id = books_type.id
WHERE books_type.book_type = 'Comedy'";
問題2:
$q = "SELECT COUNT(*) FROM books
INNER JOIN books_type ON books.id = books_type.id
WHERE books_type.book_type = 'Comedy'";
問題3:
$q = "SELECT books.id FROM books
INNER JOIN books_type ON books.id = books_type.id
WHERE books_type.book_type = 'Comedy'";
$books_count = mysql_num_rows($q);
謝謝。
+1謝謝你的參考。 – Devner 2010-02-24 09:13:21
該文章沒有解釋Count()對連接的行爲。雖然'Count(*)'和'Count(books.id)'在這種情況下具有不同的含義,它們具有相同的結果。由於'INNER JOIN ... ON books.id = books_type.id',因此不會有is_null(books.id)結果。 – VolkerK 2010-02-24 09:29:51
在這種情況下,它們確實具有相同的結果。由於books.id是主鍵(我假設),mysql不必檢查所有行是否爲NOT NULL。 雖然行爲是相同的計數(*)仍然更好。它意在計算行數,這就是你想要做的。 – douwe 2010-02-24 12:20:57