• 聚集索引与非聚集索引


    1、概念

    聚集索引就是以主键创建的索引,非聚集索引就是以非主键创建的索引

    2、区别

    (1)      聚集索引在叶子节点存储的是表中的数据,非聚集索引在叶子节点存储的是主键和索引列。使用非聚集索引查询出来的数据时,拿到叶子上的主键再去查找想要的数据。(拿到主键再查找这个过程叫回表)。

    (2)      非聚集索引也叫做二级索引,在建立的时候也未必是单列的,可以多个列来创建索引。创建多个单列(非聚集)索引的时候,会生成多个索引树(所以过多创建索引会占用磁盘空间)

    (3)      在创建多列索引中涉及到一种特殊的索引—》覆盖索引。覆盖索引就是把要查询出的列和索引是对应的,不做回表操作。如果不是聚集索引,叶子节点存储的是主键+列值,最终还是要回表的,也就是需要通过主键再查找一次,这样就会比较慢。

    (4)      比如创建了索引{username,age},查询数据的时候:select username,age from user where username =“叶子” and age =20。这个是走索引的,要查询出的列的叶子节点都存在。所以不需要回表

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    【转】理解Ruby的4种闭包:blocks, Procs, lambdas 和 Methods
    折腾weibo开放平台
    netsh——常用命令及使用技巧
    The Enemies of Achievement
    java内存模型
    命名规则
    JS 控制加载页面对象
    点击图片弹出上传文件对话框
    ASP.NET判断用户是否在线
    ASP.Net处理QueryString函数汉字参数传递错误
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14360610.html
Copyright © 2020-2023  润新知