mysql - 多列索引在 MySQL 中如何工作?

标签 mysql sql database indexing

更具体的说,MYSQL多列索引使用什么数据结构? 我知道MYSQL使用Btree做索引,只能索引一列。那么多列索引是如何工作的?

最佳答案

以这种方式思考 MySQL“复合”索引。

将索引中的所有列连接在一起,然后在该“单个”字符串上构建 BTree 索引。

一些相关评论:

一旦理解了这个类比,您就会明白为什么各个列的基数无关紧要。也就是说,复合索引中列的顺序对性能 没有影响。顺序确实很重要,具体取决于查询要求的内容。

INDEX(a,b) 可能对这些有用:

 WHERE a = 123
 WHERE b = 5 AND a = 678

但不能用于

 WHERE b = 5

(注意我对“concatenate”的使用。由于将 float 、日期、带符号的整数、具有奇数排序规则的字符串等连接起来并不实际,就好像它们只是字节一样,我并不是说 InnoDB 从字面上连接字节在一起。)

关于mysql - 多列索引在 MySQL 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70096536/

相关文章:

php - phpmyadmin 和 php PDO 之间的区别

MySQL 存储过程 - 发送可能为空或不为空的变量

MySQL - 通过 "JOIN"从另一个表中提取数据

php - 在mysql中随机化结果

php - 如何从两个日期之间堆叠的表中获取所有行?

mysql - 如何在 MacOS 中恢复 mysql root 密码

mysql - 自动生成数据库图 MySQL

mysql - 数据集中不同名称的平均长度

sql - 在带有输入参数的存储过程中使用 LIKE

java - 多个 DAO 与带有配置文件的一个 DAO