有关使用或在mysql查询中的问题

时间:2011-06-08 05:16:20

标签: mysql indexing

我想得到一些澄清,如果在索引的sql语句中使用OR,它是使用索引还是不使用?

例如,如果我有这个查询:

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

我在accountid字段上有一个索引

mysql会使用索引吗?或者使用工会会更好吗?我一直在读,mysql不会使用带有或语句的索引,或者也许我读错了。任何帮助/解释都会有所帮助。使用mysql 5.x

3 个答案:

答案 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)