1
有人可以告訴我以下查詢的昂貴的理論差異嗎?MySQL查詢費用
SELECT * FROM posts WHERE category IN(1)
SELECT * FROM posts WHERE category IN(1,2)
SELECT * FROM posts WHERE category IN(1,2,3)
...等...
感謝。
有人可以告訴我以下查詢的昂貴的理論差異嗎?MySQL查詢費用
SELECT * FROM posts WHERE category IN(1)
SELECT * FROM posts WHERE category IN(1,2)
SELECT * FROM posts WHERE category IN(1,2,3)
...等...
感謝。
從理論上講,如果你對類的索引和表已經足夠龐大和索引是有選擇性的,那麼
Cost for 1st as baseline = N
Cost of 2nd = 2 x N
Cost of 3rd = 3 x N
如果沒有索引或索引不是選擇性不夠(如類= 1涵蓋表格的10%),那麼它將執行表格掃描。如果表格很小,它甚至不會使用索引。在這種情況下,
Cost of 1st as baseline = N + X
Cost of 2nd = N + 2X
Cost of 3rd = N + 3X
的原因是全表掃描成本N.在掃描過程中,它會使用X的時間挑選出整行(select *
),所以有一點點更多地參與處理多類別,但不會影響掃描表格所需的基準時間。
有道理,它將是線性的。我想我讓它太複雜了! – Peter 2011-02-10 02:35:50