电子邮件地址作为mysql中的选择索引,用于巨大的表查询速度

时间:2015-12-30 09:51:30

标签: mysql

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

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

目前只有少数用户可以正常使用。但我担心它何时会达到一百万或更多。有没有办法快速索引电子邮件?

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

你们有什么建议?

2 个答案:

答案 0 :(得分:2)

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%的电子邮件。

答案 1 :(得分:1)

我认为你会发现任何现代数据库都能够执行这个查询(特别是如果它不使用LIKE),即使是在几分之一秒内有一百万行的表。只需确保列上有索引即可。我会添加一个自动增量字段,尽管使用整数来获取一行总是更简单快捷。

你参与的是premature optimisation.