MySQL中包含IN子句的语句是怎样执行的

2023年 7月 11日 68.3k 0

唠叨一下MySQL中包含IN子句的语句是怎样执行的(以MySQL 5.7的InnoDB存储引擎为例)。

准备工作

为了故事的顺利发展,我们先创建一个表:

CREATE TABLE t (
    id INT NOT NULL AUTO_INCREMENT,
    key1 VARCHAR(100),
    common_field VARCHAR(100),
    PRIMARY KEY (id),
    KEY idx_key1 (key1)
) Engine=InnoDB CHARSET=utf8;
复制代码

可以看到表t中包含两个索引:

  • id列为主键的聚簇索引
  • key1列建立的二级索引

这个表里边现在有10000条数据:

mysql> SELECT COUNT(*) FROM t;
+----------+
| COUNT(*) |
+----------+
|    10000 |
+----------+
1 row in set (0.00 sec)
复制代码

从B+树中定位记录

我们现在想执行下边这个语句:

SELECT * FROM t WHERE
key1 >= 'b' AND key1

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论