我想知道如何使用电子邮件进行索引。我意识到这是次优的,并且最好使用自动递增的主键。但在这种情况下,我正在尝试开发一个不需要使用帐户注册的精简版应用程序。
SELECT account_id, account_balance, account_payments_received
FROM accounts
WHERE account_email = ?
LIMIT 1
目前只有少数用户可以正常使用。但我担心它何时会达到一百万或更多。有没有办法快速索引电子邮件?
我在想也许我可以使用第一个和第二个字符作为键?也许为a = 1,b = 2,c = 3开发一个索引号,等等......
你们有什么建议?
答案 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),即使是在几分之一秒内有一百万行的表。只需确保列上有索引即可。我会添加一个自动增量字段,尽管使用整数来获取一行总是更简单快捷。