php - 具有限制和百万条记录的查询速度

标签 php mysql sql

您好,我有一个 700 万条记录的数据库表用于测试查询速度。

我测试了我的 2 个查询,它们是具有不同限制参数的相同查询:

查询 1 -

SELECT    * 
FROM      table 
LIMIT     20, 50;

查询 2 -

SELECT    * 
FROM      table 
LIMIT     6000000, 6000030;

查询执行时间为:

  1. 查询 1 - 0.006 秒
  2. 查询 2 - 5.500 秒

在这两个查询中,我都获取了相同数量的记录,但在第二种情况下,它花费了更多时间。有人可以解释一下这背后的原因吗?

最佳答案

无需仔细研究,我的假设是发生这种情况是因为第一个查询只需读取第 50 条记录即可返回结果,而第二个查询必须读取 600 万条记录才能返回结果。基本上,第一个查询会更快地短路。

我认为这与表的构成有很大关系 - 字段类型和键等。

如果记录由固定长度的字段组成(例如 CHAR 与 VARCHAR),则 DBMS 可以只计算第 n 条记录的起始位置并跳转到那里。如果它的长度可变,那么您将不得不读取记录以确定第 n 条记录的开始位置。同样,我进一步假设具有适当主键的表比没有主键的表查询起来更快。

关于php - 具有限制和百万条记录的查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101910/

相关文章:

mysql - 从 mysql 中的另一个表插入或更新

php - PHP 5.3 和 session 文件夹的问题

mysql - 查询统计数据库以获取不同事件的计数

MySQL - 从数据库中选择特定的表

mysql - 显示计数以及 mysql 中的重复行

MySQL 滚动行数

php - 使代码更高效,减少复制粘贴

php - HTML 按钮在 IE 中不起作用,但其他浏览器正常

php - Laravel 5.3 照片上传与 plupload 目录相关问题

mysql - 为什么我的 MySQL 复合索引的基数小于同一列上的单个索引?