我有一個真正的奇怪的問題使用PDO的Mysql在PHP中。PDO PHP的Mysql緩慢的特定查詢
我有一張約30,000行的表格。
如果我嘗試和運行此查詢:
SELECT card_data.name,MAX(card_data.set_order)FROM card_data, theme_decks WHERE card_data.name = '魔力流失' 和card_data.enabled = 1 GROUP BY card_data.name ORDER BY card_data.name
(其如何製造)
SELECT card_data.name, max(card_data.set_order) FROM card_data, theme_decks
WHERE card_data.name = ? and
card_data.enabled = 1 GROUP BY card_data.name ORDER BY card_data.name ASC
$paramArray = array("Mana Leak");
$sth->execute($paramArray);
通過PDO它需要大約10秒執行!然而,如果我運行phpMyAdmin的,雖然它需要不到一秒鐘相同的查詢..
怪異的一部分是低於這個查詢會比第二個雖然PDO少:
SELECT card_data.name, max(card_data.set_order) FROM card_data, theme_decks WHERE
(card_data.name = 'Extraplanar Lens' OR card_data.name = 'Mana Leak' OR card_data.name =
'overgrowth') and card_data.enabled = 1 GROUP BY card_data.name ORDER BY card_data.name ASC
(其如何製造)
SELECT card_data.name, max(card_data.set_order) FROM card_data, theme_decks WHERE
(card_data.name = ? OR card_data.name = ? OR card_data.name =
?) and card_data.enabled = 1 GROUP BY card_data.name ORDER BY card_data.name ASC
$paramArray = array("Extraplanar Lens","Mana Leak","overgrowth");
$sth->execute($paramArray);
我不能爲我的生活鍛鍊爲什麼一個單一的「名」搜索將多個名稱搜索時,需要10秒只需要大約一秒鐘的0.4 ...
編輯:情節變厚。我刪除了參數化的語句和硬編碼的文本搜索
SELECT card_data.name, max(card_data.set_order) FROM card_data, theme_decks WHERE
card_data.name = Mana Leak and card_data.enabled = 1 GROUP BY card_data.name ORDER BY
card_data.name ASC
讚賞0.000384092330933秒與PDO查詢!
BUT
SELECT card_data.name, max(card_data.set_order) FROM card_data, theme_decks WHERE
card_data.name = 'Mana Leak' and card_data.enabled = 1 GROUP BY card_data.name ORDER BY
card_data.name ASC
注意到11.00254秒到與PDO查詢!!
您的表card_data.name中是否有任何字段? –
對不起,我不明白你的意思?該字段是表中的名稱card_data – james
出於興趣,如果您將查詢存儲在存儲過程中並通過PDO和PHPMyAdmin運行,您是否得到相同的延遲? – Gavin