本文作者:kris

一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的-mysql聚簇索引是什么

kris 2025-01-20 19:51:37 3
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的-mysql聚簇索引是什么摘要: 什么属性适合建立聚簇索引?聚簇索引,顾名思义,他的表的物理顺序和索引的物理顺序是保持一致的,如果索引产生变化,整个物理表排列也就产生变化, 所以聚簇索引适合建立在一个查询为主,索引...

什么属性适合建立聚簇索引?

聚簇索引,顾名思义,他的表的物理顺序和索引的物理顺序是保持一致的,如果索引产生变化,整个物理表排列也就产生变化, 所以聚簇索引适合建立在一个查询为主,索引单向增长(不会破坏原有索引顺序),不会有频繁更新,删除,插入动作(在聚簇索引字段上) , 否则会引起整个表的重新排序,影响性能, 至于哪些属性要看你的具体表啊,比如一个历史数据仓库表就比较适合用聚簇索引 一个以学号为主键的表也适合,但是如果是以出生日期作为聚簇索引就不合适了,出生日期变化范围很大,会导致索引的频繁重新排序,影响效率

mysql非聚簇索引树建立规则?

MySQL的非聚集索引(也称为辅助索引)是在数据表中的非主键列上建立的索引。与聚集索引不同,非聚集索引中的索引条目不会按照物理上的顺序存储在磁盘上。在建立非聚集索引时,可以根据以下规则进行操作:
1. 基本规则:非聚集索引的建立需要在要索引的列上创建一个B树,并将B树的每个叶子节点指向数据行的主键值。
2. 索引选择:应选择与查询模式匹配的列作为索引的列,这样才能使查询更加高效。
3. 索引长度:索引的长度应尽量短,以减少存储空间和提高查询效率。
4. 前缀索引:可以为列的前缀创建索引,这样可以进一步减小索引的大小。
5. 多列索引:可以通过在多个列上建立联合索引来提高查询效率。
6. 唯一索引:可以将索引设置为唯一索引,以确保索引列的值在整个表中是唯一的。
7. 索引的创建和删除:在创建表时可以同时创建索引,也可以使用ALTER TABLE语句来创建和删除索引。
需要注意的是,在使用非聚集索引时,要注意对索引进行适当的维护,包括定期重建索引、删除不再使用的索引等,以保持索引的性能和效率。

MySQL非聚簇索引树的建立规则是基于B+树结构,根据索引列的值进行排序,相同值的行记录会存储在同一叶子节点上,而非聚簇索引树的叶子节点存储的是行记录的指针,因此可以快速定位到所需数据。为了保证索引的效率,需要遵循一些规则,如选择合适的索引列、避免重复索引、避免使用过长的索引列等。

一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的-mysql聚簇索引是什么

图片来源:网络

InnoDB按照主键进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。 所以,对于 聚集索引 来说,你创建主键的时候,自动就创建了主键的聚集索引。

而普通索引(非聚集索引)的语法,大多数数据库都是通用的:

CREATE INDEX Syntax CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...

) [index_type] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} [java] view plaincopy -- 创建无索引的表格 create table testNoPK ( id int not null, name varchar(10) )

; -- 创建普通索引 create index IDX_testNoPK_Name on testNoPK (name);

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/25321.html发布于 2025-01-20 19:51:37
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享