我有一個PHP MySQL查詢像這樣提高長MySQL查詢
$query = <<<EOS
SELECT * FROM articles
FORCE INDEX (articleindex)
WHERE category='$thiscat' AND did>'$thisdid'
AND mid!='$thismid' AND status='1'
AND group='$thisgroup' AND pid>'$thispid'
LIMIT 10
EOS;
作爲優選,我一直在索引所有articleindex的參數,我用武力指數強制MySQL使用索引,理應更快處理。
但似乎這個查詢仍然很慢,它導致了一個堵塞和最大的mysql連接限制。
如何改進這種長時間運行的查詢?
索引'articleindex'的定義是什麼?特別是,什麼是列(以什麼順序)?你可能不應該使用'FORCE INDEX'。如果可能的話,MySQL將使用索引,如果它可能比表掃描更快。 – outis 2010-04-16 04:55:53
另外,如果您在同一個腳本中多次執行此查詢,請使用準備好的語句。它們具有額外的優勢,即準備好的語句參數對SQL注入無懈可擊。 – outis 2010-04-16 04:57:06
最後,如果您正在爲表瀏覽功能編寫DB客戶端,則應該只選擇所有列(http://stackoverflow.com/questions/321299/what-is-the-reason-not-to-use-select )。只選擇你需要的列。 – outis 2010-04-16 05:07:07