50-优化查询

原创
2019/07/01 11:08
阅读数 47

MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行的更快,更节省资源

1.优化简介

  • 找出系统的瓶颈,提高MySQL数据库整体的性能
  • 合理的结构设计和参数调整,以提高用户操作响应的速度
  • 尽可能的节省系统资源,以便系统可以提供更大负荷的服务

使用SHOW STATUS语句查询一些MySQL数据库的性能参数

SHOW STATUS LIKE 'value';

其中,value是要查询的参数值,一些常用的性能参数如下:

  • Connections:连接MySQL服务器的次数
  • Uptime: MySQL服务器的上线时间
  • Slow_queries:慢查询的次数
  • Com_select:查询操作的次数
  • Com_insert:插入操作的次数
  • Com_update:更新操作的次数
  • Com_delete:删除操作的次数

例子:

SHOW STATUS LIKE 'Connections';

1.优化查询

查询是数据库中最平方的操作,提高查询速度可以有效地提高MySQL数据库的性能

1.分析查询语句
EXPLAIN [EXTENDED] SELETE select_options

例子:

  • id: SELECT标识符;这是SELECT的查询序列号
  • select_type:表示SELECT语句的类型;它可以是以下几种取值:
    • SIMPLE:表示简单查询,其中不包括连接查询和子查询
    • PRIMARY:表示主查询,或者是最外层的查询语句
    • UNION:表示连接查询的第2个活后面的查询语句
    • DEPENDENT UNION:连接查询中的第2个或后面的SELECT语句,取决于外面的查询
    • UNION RESULT:连接查询的结果
    • SUBQUERY,子查询中的第一个SELECT语句
    • DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询;
    • DERIVED:导出表的SELECT(FROM子句的子查询)
  • table:表示查询的表
  • type:表示表的连接类型;下面按照从最佳类型到最差类型的顺利给出各种连接类型:
    • system:该表是仅有一行的系统表;这是const连接类型的一个特例
    • const:数据表最多只有一个匹配行,它将在数据查询开始时被读取,并在余下的查询中优化中作为常量对待;const表查询速度很快,因为他们只读取一次;const用于使用常数值比较PRIMARY KEY或者UNIQUE索引的所有部分的场合
    • eq_ref:对于每个来自前面的表的行组合,从该表中读取一行;当一个索引的左右部分都在查询中使用索引时UNIQUE或PRIMARY KEY时,即可使用这种类型;eq_ref可以用于"="操作符比较带索引的列;比较值可以为常量或一个在该表前面所读取的表的列的表达式
    • re
    • ...太多了,需要的时候在慢慢看吧
  • possible_keys:指出MySQL在使用哪个索引在该表中找到行,如果该列时NULL,则没有相关的索引;在这种情况下,可以通过where子句看它是否引用某些列或适合索引的列来提高查询性能.如果是这样,可以创建合适的索引来提高查询的性能
  • key:表示查询实际使用到的索引,如果没有选择索引,该列的值是nuLL;想要强制MySQL使用或忽视possible_key列中的所有,在查询中使用FORCE INDEX,USE INDEX或者IGNORE INDEX;参见SELECT语法
  • key_len:表示MySQL选择的索引字段按字节计算的长度,如果键是NULL,则长度是NULL,注意通过key_len值可以确定MySQL将实际使用一个多列索引中的几个字段
  • ref:表示使用哪个列或常数与索引一起来查询记录
  • rows:显示MySQL在表中进行查询视必须检查的行数
  • Extra:表示MySQL在处理查询时的详细信息

DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的;DESCRIBE可以缩写为DESC

DESCRIBE SELECT select_options
2.索引对查询速度的影响
  • MySQL中提高性能的一个最有效的方式就是对数据表设计合理的索引
  • 索引提供了高效的范文数据的方法,并且加快查询的速度,英雌,索引对查询的速度有着至关重要的影响
  • 使用索引可以快速的定位表中的某条记录,从而提高数据库的查询速度,提高数据库的性能

例子:

3.使用索引查询

使用索引有几种特殊情况,在这些情况下,有可能使用带有索引的字段查询时,索引并没有起作用

  1. 使用LIKE关键字的查询语句
  • 再使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为"%",索引不会其作用
  • 只有"%"不在第一个位置,索引才会起作用

例子:

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部