我有一个包含超过1500万条记录的用户表,在进行注册功能时,我希望检查用户名是否已经存在。我为用户名列编制了索引,当我运行查询“select count(uid) from users where username='webdev'"
,。hmmm时,它继续加载空白屏幕最终挂起了。我在我的localhost中使用php 5& mysql 5这样做。所以建议我有一些技巧来处理这种情况。
mongodb 是否可以替代本地计算机处理此流程?
谢谢, Nithish。
答案 0 :(得分:6)
如果您只想检查它是否存在,请尝试不使用count
。只需一个简单的select username from users where username='webdev' LIMIT 1
可能会更快。
另外,将列类型更改为varchar
,如果不是这样的话。不要用户text
输入。它慢得多。
答案 1 :(得分:2)
这可能是一个有争议的问题,但是为了测试并查看用户名是否已经存在,我将发出以下查询(对shamittomar的查询稍作修改):
SELECT DISTINCT `username` FROM `users` WHERE `username` = 'webdev';
默认情况下,这将返回“username”列中唯一的“webdev”实例;但是,如果添加更多参数,则可能会更改结果。例如,如果你运行
SELECT DISTINCT `user_id`, `username` FROM `users` WHERE `username` = 'webdev';
它将返回“user_id”和“username”的所有唯一组合。
答案 2 :(得分:2)
你可以做的一件事是改变用户名从index to unique
的索引,这将使搜索速度更快,就像shamittomar说最后添加一个limit 1
一样,即使它只会帮助价值已经存在。