我想得到一些澄清,如果在索引的sql语句中使用OR,它是使用索引还是不使用?
例如,如果我有这个查询:
SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0
我在accountid字段上有一个索引
mysql会使用索引吗?或者使用工会会更好吗?我一直在读,mysql不会使用带有或语句的索引,或者也许我读错了。任何帮助/解释都会有所帮助。使用mysql 5.x
答案 0 :(得分:1)
如果您使用OR
,数据库将不会使用索引。
解决方法是使用IN
对其进行修改。如下:
SELECT * FROM account_orders WHERE accountid IN (1, 0)
数据库将使用具有此语法的索引(如果可用)
答案 1 :(得分:0)
最好使用EXPLAIN为select语句添加前缀。这将报告查询结果以及是否使用了任何索引。
EXPLAIN SELECT * FROM account_orders WHERE accountid = 1 OR accountid = 0
答案 2 :(得分:0)
这有点偏离主题,但你可以这样做:
SELECT * FROM account_orders WHERE accountid IN (0,1)