博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql中的索引问题
阅读量:7021 次
发布时间:2019-06-28

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

索引的用途

提高查询的效率,相当于在字典中建立的字母表或者偏旁部首表,这样查询当然比一行一行查询要快的多

每个存储引擎可以建立索引的长度是不一样的,但每个表至少支持16个索引,总的索引长度至少为256个字节。大多数存储引擎有更高的限制。

 

创建删除索引

create index index_name [USING index——type] on table_name(index_col_name)

其中:index_col_name: col_name[(length)] [ASC | DESC]

删除:drop index index_name on tabel_name

索引的类别:

Mysiam和Innodb存储引擎默认的都是BTEE索引。

而MEMORY存储引擎支持HASH索引,hash索引的问题是:只能使用=或者

<=>操作符比较,用于Order by不能使用索引。

查看索引使用的情况

mysql> show status like 'Handler_read%';

其中Handler_read_key代表一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。Handler_read_rnd_next代表在数据文件中读下一行的请求次数,如果大量的扫描表的话,此值将很高,此时应该建立索引,或者当前的索引建立不合理,需要重新建立索引。

+-----------------------+-------+

| Variable_name | Value |

+-----------------------+-------+

| Handler_read_first | 1 |

| Handler_read_key | 141 |

| Handler_read_next | 12 |

| Handler_read_prev | 0 |

| Handler_read_rnd | 24 |

| Handler_read_rnd_next | 495 |

设计索引的原则:

搜索的索引列,不一定是所要选择的列,即最合适索引的列是出现在where子句中的列,或者连接子句中指定的列,而不是出现在select关键字后的选择列表中的列。

使用唯一的索引。索引列的基数越大,就是不同的列越多,索引的效果就越好。

使用短索引、前缀索引。对于大的字符串来说,只要指定前面的一些字符来建立索引即可,因为索引也是需要磁盘空间的。

使用最左索引,就是建立索引时写在第一个位置的列。

不要过度使用索引:索引的建立生成都要占据额外的磁盘空间,并降低写操作的性能。在修改表的使用,索引也必须更新。只要保持所需的索引有利于查询优化

注意点:

当建立复合索引的时候,一般查询条件中使用到最左的索引列,索引会被使用

当查询条件中使用like关键字时,%不能放在开头,否则不会使用索引。

当查询条件中使用or关键字时,应该每个查询条件都有独立的索引

转载于:https://www.cnblogs.com/wxl-dede/p/5023253.html

你可能感兴趣的文章
Amazon Workspace DaaS服务快速导读
查看>>
深入浅出OOP(四): 多态和继承(抽象类)
查看>>
企业优秀运维人员20道必会iptables面试题
查看>>
FOSCommentBundle功能包:安装功能包
查看>>
软件开发:个人与团队是永远的核心
查看>>
在路上【我与51CTO的故事】
查看>>
谈谈监控主机的“Hook链”问题
查看>>
未来云世界畅想
查看>>
《微软-私有云》-研究-2015-01-01-1100
查看>>
docker高级应用之删除私有库镜像
查看>>
Windows10-AzureAD的支持,云的落地
查看>>
python字典和集合
查看>>
iTunesU无法上传,决定放弃
查看>>
SFB 项目经验-11-为某上市企业的Skype for Business规划与实施
查看>>
ndk-build中出现警告mangling of 'va_list' has changed in GCC 4.4
查看>>
为生活可以忍,侮辱技术行不行?
查看>>
活字格企业Web应用生成器荣获"2017年度优秀软件产品"
查看>>
Hadoop运维记录系列(十九)
查看>>
2012移动购物将迎来高速增长
查看>>
【原创】Oracle RAC原理和安装
查看>>