mysql索引提高效率(MySql如何查看索引并实现优化)
mysql索引提高效率
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不需要再内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://www.cnblogs.com/ghjbk/p/7220886.html
- mac版本php环境搭建(在Mac OS X中配置Apache+PHP+MySQL运行环境的详细步骤)
- mysqlsql按日期统计(sqlserver/mysql按天、按小时、按分钟统计连续时间段数据推荐)
- mysql常用存储方案及基本原理(详解分析MySQL8.0的内存消耗)
- mysql创建数据库基本指令(MySql 新建用户与数据库的实际操作步骤)
- mysql日志功能介绍(mysql日志系统的简单使用教程)
- 如何重新配置mysql的端口(如何快速修改MySQL用户的host属性)
- MySQL中查询数据库的大小
- python怎样读取mysql数据(使用Python将Mysql的查询数据导出到文件的方法)
- mysql面试题及答案100题(几个MySQL高频面试题的解答)
- mysql子查询用法(MySQL 子查询和分组查询)
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- mysql新增字段并添加备注(mysql添加备注信息的实现)
- mysql查看慢查询(MySQL 慢查询日志深入理解)
- mysql能groupby两个字段吗(MySQL group by语句如何优化)
- mysql集群是用什么搭建的(MySQL5.7 集群配置的步骤)
- mysql数据库主键选择的详解(图文详解MySQL中的主键与事务)
- 冰岛旅游攻略(冰岛旅游攻略及花费)
- 为什么现在年轻人越来越喜欢买衣服(为什么现在年轻人越来越喜欢买衣服穿)
- 怎么做好SEO(怎么做好seo内容优化)
- 冬季钓鱼子线用 长 还是 短(冬季钓鱼子线用)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
热门推荐
- ajax特殊字符的处理
- 做网站是使用nginx还是apache(web服务器软件Apache与Nginx的对比分析)
- 新手nginx反向代理问题(详解Nginx proxy_pass的一个/斜杠引发的血案)
- php nginx 底层执行流程(nginx/apache/php隐藏http头部版本信息的实现方法)
- mysql事务特性的主要作用(详解MySQL中事务的持久性实现原理)
- 阿里云服务器ecs的三大资源(阿里云服务器ECS入门级和企业级有什么区别?)
- linux多线程怎么设置(超详细讲解Linux C++多线程同步的方式)
- linux负载均衡(深入理解Linux负载均衡LVS)
- python模块都是自己的语法(详解Python_shutil模块)
- mysql查询killed状态的进程(MySQL kill指令使用指南)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9