【发布时间】:2014-04-24 08:02:06
【问题描述】:
我试图让这个查询使用索引。
explain SELECT SQL_NO_CACHE * FROM products WHERE (stock_disabled = 1 OR negative_stock_allowed = 1 OR stock > 0)
这是它返回的内容:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE p ALL multi_index NULL NULL NULL 2890 Using where
multi_index 是以相同顺序包含 stock_disabled、negative_stock_allowed 和 stock 的。我认为索引不起作用,因为有多个 OR 语句。我可以在这里做什么?
【问题讨论】:
-
您是否尝试过创建 3 个单独的索引?每列一个,然后运行解释?
-
MySQL 每次查询只能使用一个索引,所以对我没有任何好处。
-
只需检查单个条件 stock_disabled=1 并分享索引是否在此处使用...
-
OR 即使有索引也是一个基勒,因此您可以使用 UNION 分别拥有每个条件
标签: mysql optimization indexing multiple-columns