作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要优化一个表(INNODB),我将在其中使用 IN
在两列中执行查询。
这是查询:
SELECT `emails`.* FROM `emails`
WHERE (`from` IN ('some@email.com', 'other@email.com') OR `to` IN ('some@email.com', 'other@email.com'))
from
和 to
字段为 VARCHAR(255)
如何创建索引来帮助加快速度。或者,如果我应该更改查询策略,请告诉我
我不确定是否应该为每一列创建一个索引,或者为两列创建一个索引。我也不确定 IN
子句是否会使索引正常工作。
最佳答案
只需为每一列创建一个索引。之后mysql将能够将每个索引的结果组合成一组。 More就主题而言
创建索引后,您可以通过explain
自行检查。它应该有效。如果由于某种原因您的 mysql 版本不使用 IN
查询的索引,您可以使用 OR
重写原始查询,因为您的查询相当于
`from` = 'some@email.com' OR `from` = 'other@email.com' OR `to` = 'some@email.com' OR `to` = 'other@email.com'
关于mysql - 如何为两列中的 IN 用法创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49240410/
我是一名优秀的程序员,十分优秀!