SQL聚集索引和非聚集索引的区别

 更新时间:2026年05月22日 10:42:11   作者:Mcband  
本文主要介绍了聚集索引和非聚集索引的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、概述

聚集索引:聚集索引是索引结构和数据一起存放的索引。类似于字典的正文,当我们根据拼音直接就能找到那个字。
非聚集索引:非聚集索引是索引结构和数据分开存放的索引。类似于根据偏旁部首找字,首先找到该字所在的地址,再根据地址找到这个字的信息。

二、建立索引sql

建立聚簇索引使用CREATE INDEX语句,格式为:

CREATE CLUSTER INDEX index_name
ON table_name(column_name1,column_name2,...);

三、区别及优缺点

区别:
1.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个
2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
3.聚集索引:物理存储按照索引排序;聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序。
4.非聚集索引:物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。
5.索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

优势与缺点:
聚集索引插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入),查询数据比非聚集数据的速度快。

四、何时使用聚集索引或非聚集索引

动作描述使用聚集索引使用非聚集索引
列经常被分组排序
返回某范围内的数据不应
一个或极少不同值不应不应
小数目的不同值不应
大数目的不同值不应
频繁更新的列不应
外键列
主键列
频繁修改索引列不应

五、总结

1.使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。
2.非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。
3.不是所有的表都适合建立索引,只有数据量大表才适合建立索引,且建立在选择性高的列上面性能会更好。

到此这篇关于SQL聚集索引和非聚集索引的区别的文章就介绍到这了,更多相关SQL聚集索引和非聚集索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 小心陷阱!MySQL中处理Null时需注意两点

    小心陷阱!MySQL中处理Null时需注意两点

    这篇文章主要为大家介绍了MySQL中处理Null时需注意的两点,很关键的两点,大家千万要小心
    2016-06-06
  • MySQL数据库优化详解

    MySQL数据库优化详解

    这篇文章主要介绍了MySQL数据库优化的方方面面,各种小技巧,需要的朋友可以参考下
    2014-08-08
  • mysql 5.6.37(zip)下载安装配置图文教程

    mysql 5.6.37(zip)下载安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 5.6.37(zip)下载安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • CentOS 7搭建MySQL主从复制集群的全过程

    CentOS 7搭建MySQL主从复制集群的全过程

    在实际生产环境中,单个 MySQL 实例存在单点故障和性能瓶颈,本文将以 CentOS 7 为例,手把手教你搭建一套标准的 MySQL 主从复制集群(Master-Slave Replication),实现读写分离与数据热备,需要的朋友可以参考下
    2026-05-05
  • SQL慢查询优化方案详解

    SQL慢查询优化方案详解

    这篇文章主要介绍了SQL慢查询优化方案详解,如果你的项目中出现了一些查询超时情况,很可能是项目中有了一些慢查询的情况产生,下面就慢查询的排查和解决方案进行一番分析,需要的朋友可以参考下
    2023-07-07
  • MySQL行列互换的实现示例

    MySQL行列互换的实现示例

    在MySQL中行转列和列转行都是非常有用的操作,本文主要介绍了MySQL行列互换的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • mysql优化之路----hash索引优化

    mysql优化之路----hash索引优化

    本文是笔者自己做的关于mysql的优化方面的小测试,暂时仅仅做了hash索引优化的测试,以后会做更多方面,希望能够给您带来收获,祝您工作愉快。
    2014-08-08
  • 解决Mysql建表时报错invalid ON UPDATE clause for 'create_date' column

    解决Mysql建表时报错invalid ON UPDATE clause for 'create_d

    这篇文章主要介绍了解决Mysql建表时报错invalid ON UPDATE clause for 'create_date' column问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MYSQL多表联合查询的示例详解

    MYSQL多表联合查询的示例详解

    这篇文章主要介绍了MySQL中的多表联合查询,包括交叉连接、内连接、外连接和子查询的分类、语法和示例,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • Mysql内连接与外连接的区别详解

    Mysql内连接与外连接的区别详解

    最近别人问我一个问题:数据库中的左连接和右连接有什么区别?所以这篇文章主要给大家介绍了关于Mysql内连接和外连接区别的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论