【发布时间】:2012-04-28 17:17:13
【问题描述】:
一篇关于 Optimizing your SQL queries 的文章建议使用 Union insted of OR `cause:
使用联合而不是或
在 OR 情况下使用索引会失去速度优势
至少是 MySQL。因此,尽管索引是,这将没有用
正在应用 1 SELECT * FROM TABLE WHERE COLUMN_A = 'value' OR
COLUMN_B = '价值'另一方面,使用这样的联合将利用索引。
1- 从表中选择 * COLUMN_A = '值'
2-联合 3- 选择 * 来自
表,其中 COLUMN_B = '值'
这个建议在多大程度上是正确的?我应该将我的 OR 查询转到 Union 吗?
【问题讨论】:
-
精明的读者会注意到,这些示例涉及在 不同 列上操作的 ORing 条件,这当然不是偶然的。你自己的手术室是这样的吗?
-
阳性。你有什么建议?
-
不在我的领域,所以不能说。但是你可以
EXPLAIN两个查询,看看 MySql 对它们的看法。 -
@Jon - 废话。很明显,我今天早上只是精明的前半部分。 :-)
-
我当然假设每个单独的列上都存在索引?否则它不会更有效。