mysql索引篇_MySQL索引篇
发布日期:2021-06-24 11:48:29 浏览次数:3 分类:技术文章

本文共 954 字,大约阅读时间需要 3 分钟。

索引是数据库中用来提高性能的最常用工具,在MySQL中所有列类型都可以被索引,对相关列使用索引是提高查询操作性能对最佳途径。

MyISAM和InnoDB存储引擎对表默认创建对都是Btree索引,MySQL 目前不支持函数索引,但是支持前缀索引,前缀索引长度和存储引擎有关,对于MyISAM存储引擎的表,索引对前缀长度可以达到1000字节,而InnoDB的是767字节。

MySQL还支持全中文(FullText)索引,该索引可以用来全文搜索。但是当前最新的5.0版本中只有MyISAM引擎支持FullText索引,并且只限于Char、Varchar、和Text类型的列。

默认情况下,Memory存储引擎使用Hash索引,但也支持Btree索引。

创建索引时需要参考一下的原则:

在创建索引时,最适合索引的列是出现在where字句中的列或连接字句中指定的列,而不是查询结果的列;

创建索引时,索引的列应该建立在数据值分布广的字段上即重复性低的字段,比如InnoDB默认的主键索引,一定是唯一索引;

使用短索引,如果要对于一个字符串列进行索引,应该指定一个前缀长度,这样可以节省大量索引空间,使得查询更快,更重要的是对于短的键值,索引高速缓存中的块能容纳更多的键值,因此增加列找到行而不用读取索引中较多块的可能性;

使用最左前前缀,在创建一个聚合索引时,实际上是创建列多个索引,多索引可以起几个索引的作用,因为可以利用索引中的最左的列的列集来进行匹配,这样的列集为最左前缀;

创建索引时需要控制数量,索引并不是越多越好。每个索引都需要使用额外的磁盘空间,并且降低写操作的性能,当数据内容发生变更时,需要更改索引表,因此索引越多,所花费的时间越长;

对于InnoDB存储引擎,MySQL会自动创建主键索引,如果没有主键,但是有唯一索引,那么记录保存时就会按照唯一索引的顺序保存,如果也没有唯一索引,那么表会自动生成一个内部列,按照这个列的顺序保存。

对与Hash索引来讲,hash索引只用于使用=或<=>操作符对等式比较,优化器不能使用hash索引来加速order by操作,只能使用使用整个关键字来搜索一行数据。

当对索引字段进行范围查询时,只有Btree索引可以通过索引访问,而hash索引使用的是全表扫描。

转载地址:https://blog.csdn.net/weixin_32573931/article/details/113647437 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:有至少一个用MySQL_Mysql有用的面试题
下一篇:git 改local branch名字_用Git管理Latex写论文的工作流程

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月13日 10时32分06秒