用php操纵mysql中的1500多万条记录?

时间:2011-01-04 05:45:31

标签: php mysql mongodb rdbms database

我有一个包含超过1500万条记录的用户表,在进行注册功能时,我希望检查用户名是否已经存在。我为用户名列编制了索引,当我运行查询“select count(uid) from users where username='webdev'",。hmmm时,它继续加载空白屏幕最终挂起了。我在我的localhost中使用php 5& mysql 5这样做。所以建议我有一些技巧来处理这种情况。

mongodb 是否可以替代本地计算机处理此流程?

谢谢, Nithish。

3 个答案:

答案 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一样,即使它只会帮助价值已经存在。

相关问题