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

 

相关信息

 

 
 
 
 
 
 

热门图片

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

 
 

最新文章

  1. 【WCF】WCF中的InstanceContext与ConcurrencyMode【转】
  2. 【前端】event.target 和 event.currentTarget 的区别
  3. php通过正则从字符串中获取所有图片url地址
  4. matlab字符串操作总结
  5. [C#] Control.Invoke方法和跨线程访问控件
  6. [Redux] Avoiding Array Mutations with concat(), slice(), and ...spread
  7. Linux能力(capability)机制的继承
  8. Ubuntu在ARM上建立NFS服务
  9. TCP粘包和半包的处理方法
  10. NSIS常用代码整理
  11. 数组的创建和各种API
  12. 3分钟anaconda安装Python框架Tensorflow,1行语句测试是否成功?
  13. dba_segements 没有所有的表的信息
  14. 《Head First设计模式》批注系列(一)——观察者设计模式
  15. ONLYOFFICE连接数20个限制的由来
  16. php include,require 主要是向网页中引入文件
  17. Maven的配置以及IDEA导入本地Maven
  18. Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
  19. android基础组件---->Button的使用
  20. Linux内核静态映射表的建立过程

热门文章

  1. [Bayesian] “我是bayesian我怕谁”系列 - Latent Variables
  2. Web性能测试工具之ab入门篇
  3. c#public、private、protected、internal、protected internal修饰符及访问权限
  4. 【JavaEE】企业面试问题-Java基础
  5. 0_Simple__matrixMul + 0_Simple__matrixMul_nvrtc
  6. 使用Apache Commons Email 发生邮件
  7. rem 单位
  8. Java多线程synchronized关键字
  9. 解决mysql启动失败报1067错误
  10. C#获取指定月指定周的日期范围