首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

索引和非聚索引

关于聚索引和非聚索引的内容。 聚索引不是一种单独的索引类型,而是一种数据存储方式。将数据存储与索引放到了一块,找到索引也就找到了数据。...InnoDB 中,在聚索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚索引都是辅助索引,像组合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。...当表有聚索引时,它的数据行实际存放在索引的叶子节点中。 聚索引默认是主键,如果没有定义主键,InnoDB 会选择一个唯一的非空索引代替。...如果没有这样的索引,InnoDB 会隐式的定义一个主键来作为聚索引。InnoDB 只聚集在同一个页面的记录。 聚索引的优缺点, 优点: 可以把数据保存到一起。...Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/聚索引和非聚索引

67610

索引与非聚索引

(重点在于通过其他键需要建立辅助索引) 聚索引的优势 看上去聚索引的效率明显要低于非聚索引,因为每次使用辅助索引检索都要经过两次B+树查找,这不是多此一举吗?聚索引的优势在哪?...聚索引适合用在排序的场合,非聚索引不适合 取出一定范围数据的时候,使用用聚索引 二级索引需要两次索引查找,而不是一次才能取到数据,因为存储引擎第一次需要通过二级索引找到索引的叶子节点,从而找到数据的主键...当达到页的最大填充因子时(InnoDB 默认的最大填充因子是页大小的 15/16,留出部分空间用于以后修改),下一条记录就会写入新的页中。...mysql中聚索引的设定 聚索引默认是主键,如果表中没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚索引。...MyISM 非聚索引 MyISM使用的是非聚索引,非聚索引的两棵B+树看上去没什么不同,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的节点存储了主键,辅助键索引B+树存储了辅助键。

1.4K70
您找到你想要的搜索结果了吗?
是的
没有找到

表及表管理(Index clustered tables)

使用表可以减少磁盘I/O,改善访问表的联结所带来的资源开销,本文讲述了表的原理、创建以及管理表等。 一、什么是表及表的特性 1.表 由共享相同数据块的一组表组成。...2.键是列或多列的组合,为表所共有 在创建时指定键的列,以后在创建增加的中的每个表时,指定相同的列即可 每个键值在索引中仅仅存储一次,与不同表中有有多少这样的行无关 3....4.何时创建表 对于经常查询、当DML较少的表 表中的记录经常使用到联结查询 5.创建表的步骤 创建 创建索引 创建表 6.创建键、表时考虑的问题 哪些表适用于创建...对于创建的表哪些列用作列 创建时数据块空间如何使用(pctfree,pctused) 平均键及相关行所需的空间大小 索引的位置(比如存放到不同的表空间) 预估大小 二、创建表...在上面创建的中,一个最重要的参数就是size,需要为size 指定合适的大小,如果size 指定的太大,则每个块仅仅能存放 少量的,容易引起空间的浪费,如果指定的太小,则容易产生过多的数据链 创建索引的条件

1.1K30

linux 查看目录大小_shell判断文件大小

-s或–summarize 仅显示总计,即当前目录的大小。 -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。...1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数。...3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况 du -m /home/linux 这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。...4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况 du -g /home/linux 这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。...10>只显示一个目录树的全部磁盘使用情况 du -s /home/linux 11>查看各文件夹大小:du -h –max-depth=1 查看指定目录: 代码如下: 其中 /path表示路径

11.4K20

SQL 04 - 聚索引与非聚索引

索引与非聚索引 聚索引 在B+树上, 主索引的叶节点data域记录着完整的数据记录, 这种索引方式被称为聚索引. 因为无法把数据行存放在两个不同的地方, 所以一个表只能有一个聚索引....非聚索引 辅助索引叶节点的data域记录着主键的值, 因此在使用辅助索引进行查找时, 需要先查找到主键值, 然后再到主索引中进行查找....区别 聚索引和非聚索引的一个标志性区别就是聚索引的叶节点对应着数据页, 从中间级的索引页的索引行直接对应着数据页. 而非聚索引的索引B+树节点不是直接指向数据页....如果表有聚索引, 则行定位器是行的聚索引键. 如果聚索引不是唯一的索引, SQL将添加在内部生成的值(称为唯一值)以使所有重复键唯一....SQL通过使用存储在非聚索引的行内的聚索引键搜索聚索引来检索数据行.

41420

面试系列-innodb聚索引及非聚索引

索引 聚索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。...这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚索引。 Innodb通过主键聚集数据,如果没有定义主键,innodb会选择非空的唯一索引代替。...如果没有这样的索引,innodb会隐式的定义一个主键来作为聚索引。...:因为会强制InnoDB 将每个被更新的行移动到新的位置 辅助索引(非聚索引) 在聚索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找。...Innodb辅助索引的叶子节点并不包含行记录的全部数据,叶子节点除了包含键值外,还包含了相应行数据的聚索引键。辅助索引的存在不影响数据在聚索引中的组织,所以一张表可以有多个辅助索引。

63230

Linux 如何查看目录大小

du命令 参考文章:how to check directory size in Linux 用于显示目录或文件的大小。...显示当前目录文件或者文件占用空间:du 显示指定文件或文件夹的大小:du test.txt 方便阅读的格式查看目录所占空间情况:du -h test 仅显示当前文件夹的总计:du -s * 以方便阅读的方式查看指定目录层级的空间占用情况...:du -lh --max-depth=1 du命令排序 查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小...;du *,就是查看当前目录下各子目录和文件的大小。...sort +1 -2 选出排在前面的10个:du ems_data | sort -rn | head 选出排在后面的10个:du ems_data |sort -rn | tail 当前目录的大小

30.7K30

索引和非聚索引区别的应用

http://www.cnblogs.com/wuxiaoqian726/articles/2016095.html      聚索引和非聚索引的一个标志性区别就是聚索引的叶节点对应着数据页,从中间级的索引页的索引行直接对应着数据页...聚索引原因分析:使用SQL Server的DBCC指令进行分析。在建立聚索引的情况下,运行下面的指令获取数据表的页分配信息。...非聚索引的原因分析:     将聚索引删除, 对it_smalint_test建立非聚索引。...像上面的数据表,使用非聚索引效率不高。使用聚索引熊侣比较高。    ...这里的答案是:非聚索引同样不适用,归结为一个原因:在返回大数据结果集的情况下是不适合使用非聚索引的。

2.4K30

MySQL聚索引和非聚索引的理解

索引是物理索引,数据表就是按顺序存储的,物理上是连续的。 一旦创建了聚索引,表中的所有列都根据构造聚索引的关键列来存储。...(我的理解,所有的记录行都根据聚索引顺序存储,如按照主键Id递增方式依次物理顺序存储) 因为聚索引是按该列的排序存储的,因此一个表只能有一个聚索引。...二、MySQL中InnoDB表的聚索引 每个InnoDB表都需要一个聚索引。该聚索引可以帮助表优化增删改查操作。 如果你为表定义了一个主键,MySQL将使用主键作为聚索引。...因此每个InnoDB表都有且仅有一个聚索引。 所有不是聚索引的索引都叫非聚索引或者辅助索引。 在InnDB存储引擎中,每个辅助索引的每条记录都包含主键,也包含非聚索引指定的列。...-----------------------华丽分隔符------------------- 简单解释 聚索引和非聚索引 下面举例聚索引和非聚索引的区别。 注意:这里的主键是非自增的。

1.2K20

面试突击56:聚索引和非聚索引有什么区别?

在 MySQL 默认引擎 InnoDB 中,索引大致可分为两类:聚索引和非聚索引,它们的区别也是常见的面试题,所以我们今天就来盘它们。...聚索引 聚索引(Clustered Index)一般指的是主键索引(如果存在主键索引的话),聚索引也被称之为聚集索引。...总结 在 MySQL 的 InnoDB 引擎中,每个索引都会对应一颗 B+ 树,而聚索引和非聚索引最大的区别在于叶子节点存储的数据不同,聚索引叶子节点存储的是行数据,因此通过聚索引可以直接找到真正的行数据...;而非聚索引叶子节点存储的是主键信息,所以使用非聚索引还需要回表查询,因此我们可以得出聚索引和非聚索引的区别主要有以下几个: 聚索引叶子节点存储的是行数据;而非聚索引叶子节点存储的是聚索引...聚索引查询效率更高,而非聚索引需要进行回表查询,因此性能不如聚索引。 聚索引一般为主键索引,而主键一个表中只能有一个,因此聚索引一个表中也只能有一个,而非聚索引则没有数量上的限制。

61910

数据库中的聚索引和非聚索引

索引和非聚索引 在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不同,myisam对应的是非聚索引,而innodb对应的是聚索引。聚索引也叫复合索引、聚集索引等等。...聚索引 以innodb为例,在一个数据table中,它的数据文件和索引文件是同一个文件。即在查询过程中,找到了索引,便找到了数据文件。...在innodb中,即存储主键索引值,又存储行数据,称之为聚索引。 innodb索引,指向主键对数据的引用。非主键索引则指向对主键的引用。...在聚索引中,数据会被按照顺序整理排列,当使用where进行顺序、范围、大小检索时,会大大加速检索效率。非聚索引在存储时不会对数据进行排序,相对产生的数据文件体积也比较大。...所以myisam引擎的索引文件和数据文件是独立分开的,则称之为非聚索引 myisam类型的索引,指向数据在行的位置。即每个索引相对独立,查询用到索引时,索引指向数据的位置。

69730

索引与非聚索引(也叫二级索引)

,辅助索引访问数据总是需要二次查找,非聚索引都是辅助索引,像复合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值 这里要特别注意页的概念,一个页可以理解为一块具有一定大小的连续的存储区域...何时使用聚索引与非聚索引 一个误区:把主键自动设为聚索引 聚索引具有唯一性。...聚索引的优势 看上去聚索引的效率明显要低于非聚索引,因为每次使用辅助索引检索都要经过两次B 树查找,这不是多此一举吗?聚索引的优势在哪?...2、聚索引适合用在排序的场合,非聚索引不适合 3、聚索引对于范围查询的效率很高,因为其数据是按照大小排列的 4、二级索引需要两次索引查找,而不是一次才能取到数据,因为存储引擎第一次需要通过二级索引找到索引的叶子节点...当达到页的最大填充因子时(InnoDB 默认的最大填充因子是页大小的 15/16,留出部分空间用于以后修改),下一条记录就会写入新的页中。

51820

Oracle聚表使用方针

使用下面的方针决定是否使用聚表: 经常被应用的连接语句访问的表可以使用聚表 如果应用只是偶尔地使用表连接,或者频繁修改连接列的值,则不要使用聚表。...修改一行的聚键值比修改非聚表的值花费更长的时间,因为Oracle可能为了维护聚而把被修改的行从一个块迁移到另一个块。 如果应用经常对聚中的一个表进行全表扫描,则不要使用聚表。...如果聚中所有表的同一聚键值大于一个或两个Oracle块,则不要使用聚表。为了访问聚中的一行,Oracle要读取包含这行键值的所有块。...如果这些行占用了多个块,则访问单一行将比访问非聚表里的相同行需要更多的读取次数。 当每一个聚键值所对应的行数有很大不同时不要使用聚表。...要针对应用的要求来考虑使用聚的优缺点。例如,你需要确定连接语句的性能提升是否超过了修改聚值的性能下降,你可能还需要做实验比较聚和单独存储所花费的处理时间。

52220
领券