更具体的说,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/