【问题标题】:Mysql [5.6] Innodb select query order by id asc limit 100 is much slower than descMysql [5.6] Innodb select query order by id asc limit 100 比 desc 慢很多
【发布时间】:2020-05-16 07:37:52
【问题描述】:

我的表架构如下所示:

create table myTable (
   id int(11) not null auto_increment,
   name varchar(255) not null,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=894609724 DEFAULT CHARSET=utf8;

总行数不超过 500。id < 894609000 的行被删除。并且不存在于表中

当我这样做时:SELECT * FROM myTable ORDER BY id DESC LIMIT 100; 它的响应时间是 50 毫秒。

但是当我这样做时:SELECT * FROM myTable ORDER BY id ASC LIMIT 100; 它的响应时间是 10 秒。比逆序查询慢 200 倍。

谁能告诉我为什么会出现这种行为?

编辑:我也做了 EXPLAIN {query},它对两个查询给出了相同的结果。

【问题讨论】:

  • 你能同时显示EXPLAIN {query} 吗?哪个 MySQL 版本?
  • @danblack 我已经编辑了问题。
  • @Strawberry 已修改
  • 但没有回答任何一个问题。
  • @danblack 回答了你的两个问题

标签: mysql sql-order-by innodb sql-delete


【解决方案1】:

请做这三个陈述并提供结果:

SHOW TABLE STATUS LIKE 'myTable';
OPTIMIZE TABLE myTable;
SHOW TABLE STATUS LIKE 'myTable';

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多