博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql索引篇_MySQL索引篇
阅读量:1533 次
发布时间:2019-04-21

本文共 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索引使用的是全表扫描。

转载地址:http://ioydy.baihongyu.com/

你可能感兴趣的文章
用户对OA实施的一些认识误区
查看>>
平台型OA=高性价比OA?
查看>>
OA强大的考勤管理
查看>>
中国三大轴承厂是 哪三家?
查看>>
红头文件
查看>>
三证是什么?
查看>>
天合汽车安全技术(张家港)有限公司
查看>>
生产版本应用浅析
查看>>
物料BOM和生产订单BOM的区别
查看>>
SAP 库存相关表格
查看>>
Overview of Batch Management
查看>>
AFAB 科目要求一个成本会计分配
查看>>
SAP FI配置关键点
查看>>
java在SAE中使用的相关问题总结
查看>>
ABAP数据库操作之操作语句Insert
查看>>
ABAP数据库—更新数据
查看>>
员工没热情?这8个简单方法比加薪都管用
查看>>
生产企业开具加工费发票的问题
查看>>
世界四大通讯社
查看>>
代码存档
查看>>