gpt4 book ai didi

mysql - 在 mysql 的表中索引电子邮件,电话列

转载 作者:行者123 更新时间:2023-11-30 21:53:23 25 4
gpt4 key购买 nike

我现在有一个包含超过 500 万用户的表,该表的索引为三列。

我正在使用电子邮件或电话更新特定列,当我这样做时有时我必须更新 100k 用户,所以要检查电子邮件或电话需要一段时间先检查然后获取 ID 和根据id更新。

如果我将电子邮件和电话编入索引(两者都应该有重复的值),我的查询会比现在执行得更好吗?最好将电子邮件和电话编入索引,因为它们都保存为数据库中的字符串

最佳答案

CREATE TABLE foo (
...
PRIMARY KEY(id),
INDEX(email),
INDEX(phone)
)

如果该提示还不够,请提供您当前的 CREATE TABLE 以及您对 SQL 的“检查”和“更新”尝试。

如果问题是关于测试列,这里有一些提示:

SELECT ...
WHERE email = '...'
OR phone = '...'

会很慢。一般来说,OR 优化得不好。

这样会更快:

( SELECT id
WHERE email = '...' )
UNION DISTINCT
( SELECT id
WHERE phone = '...' )

INSERT ... ON DUPLICATE KEY UPDATE ... 将不起作用,因为 emailphone 不是唯一的。

当有两行具有匹配的电子邮件时,业务逻辑是什么?你更新两个吗?电子邮件匹配但电话不匹配怎么办?

如果你需要两者来匹配,那么这对是最优的:

UNIQUE(email, phone)

INSERT ...
ON DUPLICATE KEY UPDATE ...

关于mysql - 在 mysql 的表中索引电子邮件,电话列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46211736/

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