我想知道在PHP PDO MySQL查询中是否有使用LIMIT
的任何意义,当结果将以1行返回时(除非出现可怕的错误)。例如,给出一个表:
CREATE TABLE users (
ID Int NOT NULL AUTO_INCREMENT PRIMARY KEY,
username varchar(25)
);
以下内容之间是否存在性能差异:
$stmt=$db->prepare("SELECT username FROM users WHERE ID=:ID");
或
$stmt=$db->prepare("SELECT username FROM users WHERE ID=:ID LIMIT 1");
编辑:所以我做了我自己的小调查,似乎差异在纳秒Lol,并且两种方法都没有比另一种更快。我只是将每个语句放在10000x循环中,并记录了几次运行...在笔记本电脑上也是如此,所以不科学或任何东西大声笑......
答案 0 :(得分:0)
此查询不多,因为它位于主键上。
但是如果你正在做一个不太优化的查询,那么在有限制的查询和没有限制的查询之间会有一些小的区别。
也知道您的查询永远不会返回比预期更多的行,这让您高枕无忧。
答案 1 :(得分:0)
考虑每页调用多少查询以及每次加载页面的用户数。
您可能只会在一次查询中节省几纳秒,但它们都会加起来。
答案 2 :(得分:0)
使用LIMIT 1(或更通用的LIMIT偏移,长度)条款,保证在达到LIMIT后立即返回结果。
如果没有这样的限制,即使找不到更多匹配项,执行也可能继续 - 因此性能效果较差。 SQL查询越复杂,执行时间就越明显。
一般而言,应用合理的LIMIT条款始终被认为是一种好习惯。