【发布时间】:2014-02-01 00:46:42
【问题描述】:
我想知道在 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,而且两种方法都比另一种更快。我只是将每个语句放在一个 10000 倍的循环中,并记录了一些运行......也在笔记本电脑上,所以不科学或任何东西哈哈......
【问题讨论】:
-
您正在选择
id。如果id设置为唯一,那么 MySQL 只能返回一行。如果没有设置unique(为什么不呢?)如果返回多行,您可以检查错误。限制结果集消除了这种可能性。至于性能:您不会注意到任何差异。 -
任何性能差异(如果有)都在微秒范围内,无需担心。
-
这是一个有趣的问题,但我同意@MajidFouladpour 的观点,即任何差异都会很小。如果您有数百万条记录的数据库,那么您可能会收到一些延迟,但此时您正在挖掘行而不是问“我如何处理这么多数据?”的真正问题