Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17905
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-18 10:33
文章分类
文章存档

2015年(22)

我的朋友

分类: Mysql/postgreSQL

2015-02-28 21:21:17

    根据您的表,列,索引的详细信息,并在WHERE子句中的条件,MySQL优化考虑多种技术来有效地执行涉及SQL查询的查询。可以不读所有的行执行一个巨大的表的查询;  一个join涉及多个表可以在不进行比较的行的每个组合来执行。这一系列操作的优化选择执行最高效的查询被称为“查询执行计划”,也被称为Explain 计划。你的目标是要认识到EXPLAIN PLAN的各个方面指示查询优化的不错,并学习SQL语法和索引技术以改善该计划如果你看到一些低效的操作。

8.8.1. Optimizing Queries with EXPLAIN(使用EXPLAIN优化查询)

    EXPLAIN语句可以使用任意的一种方式,以获取有关如何执行MySQL的一份语句中,或信息的代名词形容:

  • 当你在一个语句之前使用EXPLAIN关键词,MySQL显示从对查询执行计划的优化信息。也就是说,MySQL解释它将如何处理语句,包括有关如何表的连接和在其中顺序信息。详见,Section 8.8.2, “EXPLAIN
    Output Format”


  • EXPLAIN EXTENDED可以用来获得更多的信息; 详见,Section 8.8.3, “EXPLAIN EXTENDED Output Format”

    在MySQL5.6.3解释提供了有关SELECT,DELETE,INSERT,REPLACE和UPDATE语句的信息。MySQL5.6.3之前,EXPLAIN提供大约只有SELECT语句的信息。

    以下部分描述了如何使用EXPLAIN解释扩展到获得查询执行计划的信息。

  • EXPLAIN PARTITIONS研究涉及分区表的查询时才有用。详见,Section 17.3.5, “Obtaining Information About Partitions”

  • EXPLAIN tbl_name的同义词DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name。DESCRIBE 和 SHOW COLUMNS 更多信息,详见Section 13.8.1, “DESCRIBE Syntax”, 和 Section 13.7.5.6, “SHOW COLUMNS Syntax” 。 

    用EXPLAIN的帮助下,你可以看到你应该添加索引表,以便该语句的执行速度更快通过使用索引来查找行。您还可以使用EXPLAIN来检查是否优化join的最佳顺序表。给予提示添加到优化器使用对应于该表被命名在SELECT语句的顺序连接顺序,开始语句SELECT STRAIGHT_JOIN而不只是SELECT。(详见,Section 13.2.9, “SELECT Syntax”。)

    EXPLAIN优化跟踪有时提供的信息互补。然而,优化程序跟踪的格式和内容受版本之间改变。更多信息,详见MySQL Internals: Tracing the Optimizer

    当你认为他们应该时如果你有使用索引的问题,运行ANALYZE TABLE更新表的统计数据,如键的基数,会影响优化做出的选择。详见,Section 13.7.2.1, “ANALYZE TABLE Syntax”


阅读(210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~