给定这样的表结构:
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(32) NOT NULL,
`username` varchar(16) NOT NULL,
`password` char(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
);
通过用户名搜索时使用 LIMIT 关键字有什么用,还是数据库足够聪明,知道可能只有一个结果,因此一旦找到就停止搜索?
SELECT * FROM `user` WHERE `username` = 'nick';
-- vs --
SELECT * FROM `user` WHERE `username` = 'nick' LIMIT 1;
更新:感谢您的回答,他们一直很有启发性。看起来,即使没有必要,LIMIT 1
进行查询也不会受到伤害,并且可能会增加可读性(您不必查看数据库模式就知道只会返回一个)。特别为 JR 的回答大喊大叫——我什至不知道你可以用索引来做到这一点。
另外,我在这里找到了一个类似的问题,这也可能有所帮助。