mysql聚集索引和非聚集索引的区别是什么
文 / @UTHEME
MySQL的Innodb存储引擎的索引分为聚集索引和非聚集索引两大类。聚集索引索引中键值的逻辑顺序决定了表中相应行的物理顺序,确定了表中数据的物理顺序。聚集索引适用于经常需要搜索范围值的列,如日期范围内的记录。非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,仅仅存储了对应数据的聚集索引的key。使用非聚集索引进行查询需要进行回表操作,先找到聚集索引的key,再到主键索引树上查找对应的数据。非聚集索引的存储结构类似于新华字典的偏旁字典,它的结构顺序与实际存放顺序不一定一致。
聚集索引和非聚集索引的区别主要有以下几点:
1. 索引内容不同:聚集索引是以主键创建的索引,在叶子节点存储表中的具体数据,而非聚集索引则是以非主键创建的索引,在叶子节点存储的是主键和索引列。
2. 排列顺序不同:聚集索引中表记录的排列顺序和索引的排列顺序一致,查询效率高。而非聚集索引中表记录的排列顺序和索引的排列顺序不一致。
3. 存储方式不同:聚集索引是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储不连续。
4. 数量限制不同:聚集索引每张表只能有一个,而非聚集索引可以有多个。
在实际应用中,需要根据具体情况选择聚集索引和非聚集索引。如果需要经常进行范围查询,聚集索引可以提高查询效率;如果需要在多个列上建立索引,或者需要在非主键上建立索引,那么需要使用非聚集索引。

相关文章
-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
mysql查询怎么区分大小写 2023-05-14 07:00:02