MySql如何查看索引并实现优化

 更新时间:2020年12月09日 10:59:00   作者:ノGHJ  
这篇文章主要介绍了MySql如何查看索引并实现优化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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不需要再内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈MySQL数据查询太多会OOM吗

    浅谈MySQL数据查询太多会OOM吗

    本文主要介绍了浅谈MySQL数据查询太多会OOM吗?文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 关于查询MySQL字段注释的5种方法总结

    关于查询MySQL字段注释的5种方法总结

    在MySQL数据库中,字段或列的注释是用属性comment来添加,下面这篇文章主要给大家介绍了关于查询MySQL字段注释的5种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • MySQL之高可用集群部署及故障切换实现

    MySQL之高可用集群部署及故障切换实现

    这篇文章主要介绍了MySQL之高可用集群部署及故障切换实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • MySQL数据库基本SQL语句教程之高级操作

    MySQL数据库基本SQL语句教程之高级操作

    对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理,下面这篇文章主要给大家介绍了关于MySQL数据库基本SQL语句教程之高级操作的相关资料,需要的朋友可以参考下
    2022-06-06
  • Mysql忘记root密码怎么办

    Mysql忘记root密码怎么办

    MySQL有时候忘记了root密码是一件伤感的事,下面通过本文给大家介绍Mysql忘记root密码怎么办的相关知识,需要的朋友参考下
    2016-01-01
  • MySQL 8.0.18使用clone plugin重建MGR的实现

    MySQL 8.0.18使用clone plugin重建MGR的实现

    这篇文章主要介绍了MySQL 8.0.18使用clone plugin重建MGR的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • JDBC如何连接不同类型数据库

    JDBC如何连接不同类型数据库

    这篇文章主要介绍了JDBC如何连接不同类型数据库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2007-02-02
  • MYSQL数据库管理之权限管理解读

    MYSQL数据库管理之权限管理解读

    这篇文章主要介绍了MYSQL数据库管理之权限管理解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    下面小编就为大家带来一篇浅谈innodb的索引页结构,插入缓冲,自适应哈希索引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MYSQL中EXISTS的用法小结

    MYSQL中EXISTS的用法小结

    在MySQL数据库中,EXISTS是一种强大的工具,用于处理复杂的查询需求,本文主要介绍了MYSQL中EXISTS的用法小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05

最新评论