我想澄清一下,如果在索引的sql語句中使用OR,它是否使用索引或不使用索引?關於在mysql查詢中使用的問題
例如,如果我有這個疑問:
SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0
我對ACCOUNTID場
的索引將MySQL的使用索引?或者使用聯盟會更好?我一直在閱讀,MySQL不使用索引與一個或聲明,或者我讀不正確的。任何幫助/解釋都會有幫助。使用mysql 5.x
我想澄清一下,如果在索引的sql語句中使用OR,它是否使用索引或不使用索引?關於在mysql查詢中使用的問題
例如,如果我有這個疑問:
SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0
我對ACCOUNTID場
的索引將MySQL的使用索引?或者使用聯盟會更好?我一直在閱讀,MySQL不使用索引與一個或聲明,或者我讀不正確的。任何幫助/解釋都會有幫助。使用mysql 5.x
數據庫,如果你使用OR
像你有不會使用索引。
解決方法是使用IN
來更改它。如下:
SELECT * FROM account_orders WHERE accountid IN (1, 0)
數據庫將使用索引(如果可用)與此語法
最好用EXPLAIN作爲你的select語句的前綴。這將報告有關查詢的結果以及是否使用了任何索引。
EXPLAIN SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0
這有點偏離主題,但你可能只是做:
SELECT * FROM account_orders WHERE accountid IN (0,1)
不脫主題。關於主題 - 請參閱我的回答 – Bohemian 2011-06-08 05:26:17
酷!我只是認爲它更簡潔。 – 2011-06-08 17:56:49
感謝您的反饋意見。我運行了很多,我想我應該被問到作爲一個經驗法則mysql總是不使用OR語句中的索引。 – John 2011-06-08 05:24:30