Heim >Datenbank >MySQL-Tutorial >MySQL数据库技术(21)[组图]_MySQL

MySQL数据库技术(21)[组图]_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:53:14920Durchsuche

  4.2 MySQL 查询优化程序

    在发布一个选择行的查询时, MySQL 进行分析,看是否能够对它进行优化,使它执行更快。本节中,我们将研究查询优化程序怎样工作。更详细的信息,可参阅MySQL 参考指南中的“Getting Maximum Performance from MySQL”,该章描述了MySQL 采用的各种优化措施。该章中的信息会不断变化,因为MySQL 的开发者不断对优化程序进行改进,因此,有必要经常拜访一下该章,看看是否有可供利用的新技巧。(h t t p : / / w w w.mysql.com/ 处的MySQL 联机参考指南在不断地更新。)

    MySQL 查询优化程序利用了索引。当然,它也利用了其他信息。例如,如果发布下列查询,MySQL 将非常快地执行它,不管相应的表有多大:

    SELECT * FROM tb1_name WHERE 1 = 0

    在此情形中,MySQL 考察WHERE 子句,如果认识到不可能有满足该查询的行,就不会对该表进行搜索。可利用EXPLAIN 语句知道这一点,EXPLAIN 语句要求MySQL 显示某些有关它应该执行一条SELECT 查询,而实际没有执行的信息。为了使用E X P L A I N,只需要SELECT 语句前放置EXPLAIN 即可,如下所示:

  EXPLAIN SELECT * FROM tb1_name WHERE 1 = 0

MySQL数据库技术(21)[组图]_MySQL

  通常,EXPLAIN 返回的信息比这个多,包括将用来扫描表的索引、将要使用的连接类型以及需要在每个表中扫描的行数估计等等。

  4.2.1 优化程序怎样工作

  MySQL 查询优化程序有几个目标,但其主要目标是尽量利用索引,而且尽量使用最具有限制性的索引以排除尽可能多的行。这样做可能会适得其反,因为发布一条SELECT 语句的目的是寻找行,而不是拒绝它们。优化程序这样工作的原因是从要考虑的行中排除行越快,那么找到确实符合给出标准的行就越快。如果能够首先进行最具限制性的测试,则查询可以进行得更快。假如有一个测试两列的查询,每列上都有一个索引:

    WHERE coll = "some value" AND col2 = "some other value"

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn