mysql数据库优化(二)--

mysql数据库优化(二)--

ID:22371706

大小:73.00 KB

页数:12页

时间:2018-10-28

mysql数据库优化(二)--_第1页
mysql数据库优化(二)--_第2页
mysql数据库优化(二)--_第3页
mysql数据库优化(二)--_第4页
mysql数据库优化(二)--_第5页
资源描述:

《mysql数据库优化(二)--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、MySQL数据库优化(二)>>  1.EXPLAIN语法(得到SELECT的相关信息)   EXPLAINtbl_name  或者:    EXPLAINSELECTselect_options  tableIN语句可以被当作DESCRIBE的同义词来用,也可以用来获取一个MySQL要执行的SELECT语句的相关信息。EXPLAINtbl_name语法和DESCRIBEtbl_name或SHONSFROMtbl_name一样。当在一个SELECT语句前使用关键字EXPLAIN时,MYSQL会解释

2、了即将如何运行该SELECT语句,它显示了表如何连接、连接的顺序等信息。本章节主要讲述了第二种EXPLAIN用法。  在EXPLAIN的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让SELECT运行更快。  如果由于不恰当使用索引而引起一些问题的话,可以运行ANALYZETABLE来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。  您还可以查看优化程序是否以最佳的顺序来连接数据表。为了让优化程序按照SELECT语句中的表名的顺序做连接,可以在查询的开始使

3、用SELECTSTRAIGHT_JOIN而不只是SELECT。  EXPLAIN返回了一行记录,它包括了SELECT语句中用到的各个表的信息。这些表在结果中按照MySQL即将执行的查询中读取的顺序列出来。MySQL用一次扫描多次连接(single-sulti-join)的方法来解决连接。这意味着MySQL从第一个表中读取一条记录,然后在第二个表中查找到对应的记录,然后在第三个表中查找,依次类推。当所有的表都扫描完了,它输出选择的字段并且回溯所有的表,直到找不到为止,因为有的表中可能有多条匹配的记

4、录下一条记录将从该表读取,再从下一个表开始继续处理。  在MySQLversion4.1中,EXPLAIN输出的结果格式改变了,使得它更适合例如UNION语句、子查询以及派生表的结构。更令人注意的是,它新增了2个字段:id和select_type。当你使用早于MySQL4.1的版本就看不到这些字段了。  EXPLAIN结果的每行记录显示了每个表的相关信息,每行记录都包含以下几个字段:  id  本次SELECT的标识符。在查询中每个SELECT都有一个顺序的数值。  select_type  S

5、ELECT的类型,可能会有以下几种:  SIMPLE  简单的SELECT(没有使用UNION或子查询)  PRIMARY  最外层的SELECT。  UNION  第二层,在SELECT之后使用了UNION。  DEPENDENTUNION  UNION语句中的第二个SELECT,依赖于外部子查询  SUBQUERY  子查询中的第一个SELECT  DEPENDENTSUBQUERY  子查询中的第一个SUBQUERY依赖于外部的子查询  DERIVED  派生表SELECT(FROM子句中

6、的子查询)  table  记录查询引用的表。  type  表连接类型。以下列出了各种不同类型的表连接,依次是从最好的到最差的:  system  表只有一行记录(等于系统表)。这是const表连接类型的一个特例。  const  表中最多只有一行匹配的记录,它在查询一开始的时候就会被读取出来。由于只有一行记录,在余下的优化程序里该行记录的字段值可以被当作是一个恒定值。const表查询起来非常快,因为只要读取一次!const用于在和PRIMARYKEY或UNIQUE索引中有固定值比较的情形。下

7、面的几个查询中,tbl_name就是const表了:    SELECT*FROMtbl_nametbl_name  ARYKEY或UNIQUE类型。eq_ref可以用于在进行=做比较时检索字段。比较的值可以是固定值或者是表达式,表达式中可以使用表里的字段,它们在读表之前已经准备好了。以下的几个例子中,MySQL使用了eq_ref连接来处理ref_table:    SELECT*FROMref_table,other_table  ref_table,other_table  ARYKEY或U

8、NIQUE索引(换句话说,就是连接程序无法根据键值只取得一条记录)的情况。当根据键值只查询到少数几条匹配的记录时,这就是一个不错的连接类型。ref还可以用于检索字段使用=操作符来比较的时候。以下的几个例子中,MySQL将使用ref来处理ref_table:    SELECT*FROMref_tableref_table,other_table  ref_table,other_table  ySQL会在检索的时候额外的搜索包含NULL值的记录。这种连接类型的优化是从MySQL4.1.1开始的,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。