【问题标题】:To LIMIT or not to LIMIT? [duplicate]限制还是不限制? [复制]
【发布时间】:2013-06-03 05:30:23
【问题描述】:

假设一个表有一个 ID 列,PRIMARY KEY 和 AUTOINCREMENT。

如果我进行如下查询:

SELECT * FROM table WHERE ID = ?

需要加LIMIT 1吗?

这会提高性能还是什么?

我正在使用 SQLite 和 PHP 的 PDO。

【问题讨论】:

  • 如果你说你有一个唯一的 ID 那么你不必有一个LIMIT
  • 是的,但我想知道引擎是否知道这一点并在找到第一个记录后停止,或者它继续进一步搜索..
  • 运行解释 SELECT * FROM table WHERE ID = ?,它说明了一切。
  • PDO 与您的问题无关。它只是发送查询并获取数据库提供的结果的一组命令

标签: php sql pdo limit


【解决方案1】:

如果它是主键,那么引擎应该做正确的事情。主键索引是unique 索引,因此 MySQL 知道只有一个匹配值。

但即使不这样做,对性能的影响也会非常小。引擎将使用主键索引来找到正确的值,直接到索引中的正确位置。然后它会加载数据页(为了满足select *)。

然后,要么立即停止。或者,它扫描并读取索引中的下一个值,然后停止。额外的开销将是读取索引中的下一个值。与加载数据页面相比,开销非常小。

如果你对这些东西感兴趣,你应该看看documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多