mysql - 电子邮件地址作为mysql中的选择索引以获得大表查询速度

标签 mysql

我想知道如何使用电子邮件进行索引。我意识到这是次优的,最好使用自动递增主键。但在本例中,我正在尝试开发一个不需要帐户注册即可使用的精简版应用程序。

SELECT account_id, account_balance, account_payments_received
FROM accounts
WHERE account_email = ?
LIMIT 1

目前,在用户很少的情况下,这可以正常工作。但我担心它何时达到一百万或更多。有没有办法快速索引电子邮件?

我在想也许我可以使用第一个和第二个字符作为键?也许为a=1、b=2、c=3等等制定一个索引号......

你们有什么建议?

最佳答案

1)你应该保留一个带有auto_increment的主键,因为它会在与其他表连接时提高你的效率。

2) 保留 account_email 字段 varchar(255) 而不是 char(255),以便可以取回空闲字节。即使 varchar(100) 也足够了。

3)按照以下命令在此字段上创建部分索引。

alter table accounts add index idx_account_email(account_email(50));

注意:varchar(50) 将覆盖几乎 99% 的电子邮件。

关于mysql - 电子邮件地址作为mysql中的选择索引以获得大表查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527017/

相关文章:

php - Laravel:添加到列中的现有字段数据

java - 无法使用 JSP、Glassfish 连接到 mysql 数据库

MySQL - 按一列排序,然后按另一列排序

php - 在 php mysql 查询中不会合并包含表中的所有字段

mysql - 如何更新链接到多个表的 FK - Cascade on Update

mysql,查询条件,如果一个值=任何东西

mysql - 有没有可用的插件可以让我用 eclipse 自动生成实体关系图

php - 从时间戳填充多维数组

c# - Visual Studio Server Explorer 是否支持自定义数据库提供程序?

mysql - 从所有以 raw_% 开头的表中删除超过 2 个月的旧日志