2011-06-08 40 views
0

我想澄清一下,如果在索引的sql語句中使用OR,它是否使用索引或不使用索引?關於在mysql查詢中使用的問題

例如,如果我有這個疑問:

SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0 

我對ACCOUNTID場

的索引將MySQL的使用索引?或者使用聯盟會更好?我一直在閱讀,MySQL不使用索引與一個或聲明,或者我讀不正確的。任何幫助/解釋都會有幫助。使用mysql 5.x

回答

1

數據庫,如果你使用OR像你有不會使用索引。

解決方法是使用IN來更改它。如下:

SELECT * FROM account_orders WHERE accountid IN (1, 0) 

數據庫使用索引(如果可用)與此語法

0

最好用EXPLAIN作爲你的select語句的前綴。這將報告有關查詢的結果以及是否使用了任何索引。

EXPLAIN SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0 
+0

感謝您的反饋意見。我運行了很多,我想我應該被問到作爲一個經驗法則mysql總是不使用OR語句中的索引。 – John 2011-06-08 05:24:30

0

這有點偏離主題,但你可能只是做:

SELECT * FROM account_orders WHERE accountid IN (0,1) 
+0

不脫主題。關於主題 - 請參閱我的回答 – Bohemian 2011-06-08 05:26:17

+0

酷!我只是認爲它更簡潔。 – 2011-06-08 17:56:49