本文作者:kris

MySQL学习教程之聚簇索引-建立聚簇索引sql语句

kris 2025-01-22 18:33:11 2
MySQL学习教程之聚簇索引-建立聚簇索引sql语句摘要: mysql非聚簇索引树建立规则?MySQL的非聚集索引(也称为辅助索引)是在数据表中的非主键列上建立的索引。与聚集索引不同,非聚集索引中的索引条目不会按照物理上的顺序存储在磁盘上。...

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

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

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

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

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

MySQL学习教程之聚簇索引-建立聚簇索引sql语句

图片来源:网络

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);

为什么数据库给主键加不上聚簇索引?

如果你用的数据库是mysql,那么聚簇索引就是主键,并且不允许你设置非主键列为聚簇索引。

就算你不手动设置主键,mysql也会自动建一个隐藏的列做为主键;

如果你用的是sqlserver,那么默认主键就是聚簇索引,因为一张表只能允许一个聚簇索引,所以这时直接指定其它列为聚簇索引是不行的。

这时如果需要使用其它列作聚簇索引,需要先删除主键约束,然后将其它列设置为聚簇索引,最后再恢复主键约束就可以了。

文章版权及转载声明

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

阅读
分享