首页 / MYSQL / 10.Mysql索引
10.Mysql索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了10.Mysql索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2182字,纯文字阅读大概需要4分钟。
内容图文
![10.Mysql索引](/upload/InfoBanner/zyjiaocheng/501/8b112498e11248da824c6b38f290e869.jpg)
10.索引的设计和使用
10.1 索引概述
BTREE索引:Mysql(MyIASM和Innodb)默认的索引类型。
前缀索引:对索引字段的前N个字符创建索引。N的最大取值和存储引擎有关,MyIASM支持最大前缀长度为1000字节,Innodb引擎支持最大前缀长度为767字节。
全文索引:可用于全文搜索。仅有MyIASM支持全文索引,且只限于CHAR、VARCHAR、Text类型的列。
空间类型索引:仅有MyIASM支持空间类型索引,索引列必须为非空。
HASH索引:仅有MEMORY支持HASH索引。
创建索引语法:
create [unique | fulltext | spatial] index index_name [using index_type] on table_name (col_name[(length)] [ASC|DESC]);
说明:
index_type取值为BTREE、RTRE、Hash
例子:
create index idx_emp_ename on emp (ename(5));
分析查询语句,检查是否使用了索引:
explain select * from emp where ename=‘SCOTT‘;
删除索引语法:
drop index index_name on table_name;
例子:
drop index idx_emp_ename on emp;
10.2 设计索引的原则
最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字后的选择列表中的列;
考虑某列中值的分布,索引的列的基数越大,索引的效果越好;
使用短索引,对字符串索引时应该指定一个前缀长度,即前N个字符就能大致区分唯一纪录时,避免对整列添加索引。
复合索引,选择合适的最左前缀列;
不要过度索引,索引会占用额外的磁盘空间,并降低DML性能。
Innodb引擎的表记录按主键顺序保存,应该给表尽量指定主键,主键列要选择较短的数据类型,其它非主键索引会保存主键列。
10.3 Btree索引和Hash索引
Hash索引只能用于等值比较(=,<=>),不能用于范围比较(>,<,>=,<=,!=,<>,between...and,like),不能用于排序操作(order by),只能使用整个关键字来搜索一行。
Btree索引可用于等值比较和范围比较(>,<,>=,<=,!=,<>,between...and,like)。
MEMORY引擎表默认创建Hash索引,在范围比较时应创建Btree索引。
10.4 小结
索引用于快速找出特定的行,不是用索引时将顺序扫描所有的行;
如果条件列有索引,将根据条件值在索引中查找记录主键,根据主键在数据中访问特定的行;
如果需要访问表中很大一部分行(20%),顺序读取将比索引扫描更快,索引不起效。
Mysql类型分为BTREE索引、RTREE索引、Hash索引;
其中:主键索引、唯一键索引、全文索引、普通索引都是BTREE索引,空间索引是RTREE索引。
10.Mysql索引
标签:desc from explain 列表 查询 快速 order unique exp
本文系统来源:https://www.cnblogs.com/BradMiller/p/9777143.html
内容总结
以上是互联网集市为您收集整理的10.Mysql索引全部内容,希望文章能够帮你解决10.Mysql索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。