Mysql学习(索引篇)

发布时间:2023-01-18 19:00

说说你对 MySQL 索引的理解?

数据库索引的原理,为什么要用 B+树,为什么不用二叉树?

聚集索引与非聚集索引的区别?

InnoDB引擎中的索引策略,了解过吗?

创建索引的方式有哪些?

聚簇索引/非聚簇索引,mysql索引底层实现,为什么不用B-tree,为什么不用hash,叶子结点存放的是数据还是指向数据的内存地址,使用索引需要注意的几个地方?

mysql官方对索引的定义为:索引是帮助Mysql搞笑获取数据的数据结构,所以说索引的本质是:数据结构

索引的目的在于提高查询效率,可以类比字典的目录。

除了数据以外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法。

索引本身也很大,不可能全部存储在内存中,一般以索引文件的形式存储在磁盘上。

索引没有特别指明的话,就是B+树,其中聚集索引,次要索引,覆盖索引,符合索引,前缀索引,唯一索引默认都是使用B+树索引,此外还有哈希索引。

基本语法

创建索引

create [unique] index indexName on mytable(username(length))

如果是char varchar类型 length可以小于字段实际长度,如果是BLOB和text类型,必须指定length。

修改表结构(添加索引)

alter table tableName ADD [UNIQUE] INDEX indexName(columnName)

删除

drop index [indexName] on mytable

查看

show index from table_name\G

使用ALERT命令

该语句添加一个主键,这意味着索引值必须是唯一的。 

alter table tal_name add primary key

这条语句创建的值必须是唯一的 是唯一索引,但是Null可以出现多次

ALTER TABLE tbl_name ADD UNIQUE index_name 

添加普通索引,索引值可出现多次

ALTER TABLE tbl_name ADD INDEX index_name 

该语句指定了索引为fulltext, 用于全文索引。

ALTER TABLE tbl_name ADD FULLTEXT index_name 

优势

  • 提高数据检索效率,降低数据库io成本
  • 降低数据排序的成本,降低CPU的消耗

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号