我有一張包含100萬條記錄的表,我設計了2個查詢。SQL查詢性能差異
表索引:
id = primary
bedroom = index
elevator = index
pricemeter = index
dateadd = index
我想知道,爲什麼這個查詢:
SELECT
*
FROM (
SELECT
*
FROM `p_apartmentbuy`
WHERE
`sqm` > 100
AND `bedroom` > 1
AND `elevator` = 1
AND `pricemeter` < 5999999
ORDER BY `id` DESC
LIMIT 0, 30
) AS `alias`
ORDER BY `id` DESC, `dateadd` DESC
是如此速度遠遠這一個:
SELECT
*
FROM `p_apartmentbuy`
WHERE
`sqm` > 100
AND `bedroom` > 1
AND `elevator` = 1
AND `pricemeter` < 5999999
ORDER BY `id` DESC, `dateadd` DESC
LIMIT 0, 30
首先查詢了0.0027秒,第二個查詢耗時5.6848秒。 這兩個結果都與其他相同,where子句中的變量都是示例。
解釋快速查詢:
解釋慢查詢:
執行計劃說什麼? – Lamak 2012-03-26 14:40:17
在SELECT之前使用'EXPLAIN',這樣我們就可以看到執行計劃並確保你的SQL緩存在運行查詢前是空的。 – 2012-03-26 14:42:09
@ N.B。我加了解釋結果 – Hamidreza 2012-03-26 14:51:10