首页 > 代码库 > mysql如何查看索引使用情况以及优化 - guols0612

mysql如何查看索引使用情况以及优化 - guols0612

mysql中支持hash和btree索引。innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引

我们可以通过下面语句查询当前索引使用情况:

show status like ‘%Handler_read%‘;

+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_last | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+-----------------------+-------+

如果索引正在工作,则Handler_read_key的值会很高,这个值代表一个行被索引值读的次数,很低值表名增加索引得到的性能改善不高,因此索引并不经常使用

如果Handler_read_rnd_next值很高意味着查询运行效率很低,应该建立索引补救,这个值含义是在数据文件中读取下一行的请求数。如果正在进行大量表扫描,Handler_read_rnd_next的数值将会很高。说明索引不正确或者没有利用索引。

 

优化:

优化insert语句:

1.尽量采用 insert into test values(),(),(),()...

2.如果从不同客户插入多行,能通过使用insert delayed语句得到更高的速度,delayed含义是让insert语句马上执行,其实数据都被放在内存队列中个,并没有真正写入磁盘,这比每条语句分别插入快的多;low_priority刚好相反,在所有其他用户对表的读写完后才进行插入。

3.将索引文件和数据文件分在不同磁盘上存放(利用建表语句)

4.如果进行批量插入,可以增加bulk_insert_buffer_size变量值方法来提高速度,但是只对MyISAM表使用

5.当从一个文本文件装载一个表时,使用load data file,通常比使用insert快20倍

优化group by语句:

默认情况下,mysql会对所有group by字段进行排序,这与order by类似。如果查询包括group by但用户想要避免排序结果的消耗,则可以指定order by null禁止排序。

优化order by语句:

某些情况下,mysql可以使用一个索引满足order by字句,因而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引的顺序相同,并且order by的字段都是升序或者降序。

技术分享

优化嵌套查询:

mysql4.1开始支持子查询,但是某些情况下,子查询可以被更有效率的join替代,尤其是join的被动表待带有索引的时候,原因是mysql不需要再内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作。

 

posted on
请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!

 
分享到:QQ空间新浪微博腾讯微博人人网微信

相关信息

  • mysql如何查看索引使用情况以及优化(2102)
  • mysql各种引擎特性对比表(190)
  • mysql优化sql语句的思路浅谈(121)
  • mysql访问权限控制流程图(47)
  • mysql大表的水平拆分案例详解(33)
  • 如何使用索引提高查询速度
  • mysql有索引,查询依然非常慢,请问怎么优化
  • mysql 这条查询语句怎么优化或建立哪些索引 执行结...
  • 如何利用mysql索引优化检索
  • 请问在mysql里两个表连接使用索引怎样优化最好
  • mysql有几种索引类型?使用索引时都有那些地方要注...
  • mysql有索引,查询依然非常慢,请问怎么优化
  • mysql 查询的时候加了索引 查询还是很慢怎么办
  • MySQL中如何查看“慢查询”,如何分析执行SQL的效率?
更多关于 mysql如何查看索引使用情况以及优化 的信息>>
 
 

 

您可能还关注

  • mysql如何查看索引使用情况以及优化(2102)
  • mysql各种引擎特性对比表(190)
  • mysql优化sql语句的思路浅谈(121)
  • mysql访问权限控制流程图(47)
  • mysql大表的水平拆分案例详解(33)
  • 如何使用索引提高查询速度
  • mysql有索引,查询依然非常慢,请问怎么优化
  • mysql 这条查询语句怎么优化或建立哪些索引 执行结...
  • 如何利用mysql索引优化检索
  • 请问在mysql里两个表连接使用索引怎样优化最好
  • mysql有几种索引类型?使用索引时都有那些地方要注...
  • mysql有索引,查询依然非常慢,请问怎么优化
  • mysql 查询的时候加了索引 查询还是很慢怎么办
  • MySQL中如何查看“慢查询”,如何分析执行SQL的效率?
 
 
 
 
 

热门图片

    浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。
 
 

mysql如何查看索引使用情况以及优化 - guols0612