gpt4 book ai didi

mysql - 如何为两列中的 IN 用法创建索引

转载 作者:行者123 更新时间:2023-11-29 10:21:06 24 4
gpt4 key购买 nike

我需要优化一个表(INNODB),我将在其中使用 IN 在两列中执行查询。

这是查询:

SELECT `emails`.* FROM `emails` 
WHERE (`from` IN ('some@email.com', 'other@email.com') OR `to` IN ('some@email.com', 'other@email.com'))

fromto 字段为 VARCHAR(255)

如何创建索引来帮助加快速度。或者,如果我应该更改查询策略,请告诉我

我不确定是否应该为每一列创建一个索引,或者为两列创建一个索引。我也不确定 IN 子句是否会使索引正常工作。

最佳答案

问题 1 - 创建哪个索引

只需为每一列创建一个索引。之后mysql将能够将每个索引的结果组合成一组。 More就主题而言

问题 2 - 子句

创建索引后,您可以通过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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com