下载此文档

MySQL 查询优化器的使用.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
MySQL查询优化器的使用查询引擎总是不能正确理解你的查询意图吗?害怕的错误的时机提出错误的问题吗?。大多数查询引擎提供了查询简化的功能,其目的就是使得查询比原始输入更加高效。MySQL查询优化器极大的发挥了这种功能,为了在丝毫不改变原始目标的前提下尽量简化查询,优化器对查询进行分析有时甚至重新描述。按照效率最高的原则,MySQL查询优化器启用了一到两条强调规则。查询优化器的最主要的逻辑思想是尽多尽早的去掉一些行。这听起来有悖于查询的目标,查询的确就是为了选出记录,但这个逻辑却并没有错。开始时优化器去掉的行越多,需要查询按照附加规则去估值的行就越少。需要与规则进行比较的行数越少,查询就能越快的完成任务。举个例子,假设一个SELECT查询使用WHERE语法规定了两个条件:WHEREcol1=条件AANDcol2=条件B现在,假设1,000行符合条件A而只有250行符合条件B。而且,只有5条记录同时符合上述两个条件。优化器选择的是最小障碍路径:250行匹配。原因很明显:这样只需要对符合条件B的250条记录进行估值来找到同时符合两个条件的记录。如果优化器起初选择符合条件A的1000条记录,MySQL就得对这1000条记录进行估值,来找到同时符合两个条件的记录。MySQL使用索引来确定到底哪个条件提供了最快捷的路径索引简单说来,索引就是指向数据文件中实际记录的指针。索引包含了值对应了表中每一个值,但是MySQL是按照顺序存储索引值的。例如,在表employee中,你可能对字段EmployeeNumber进行索引。不管你怎样整理表employee,索引值始终按照EmployeeNumber进行排序。现在假设在表中查找编号为24的雇员。MySQL对表进行搜索并在索引值为25处停止。优化器知道,索引值超过25就不会再有更多指针符合查找规则。现在,为了能够理解下面的叙述,需要定义几个必须知道的索引术语:单列索引只考虑一列的值。多列索引考虑一列以上的值。左端前缀索引是充当索引的左端列的集合。前两个顾名思义;第三个复杂一些。多列索引有可能充当几个前缀,这是因为索引中任意从最左边开始的连续列,都可用来匹配数值。例如,假设有一个三列索引,其列名如下:LastName,FirstName,和Title。除了原来的索引,还可能有两个以上索引:LastName,FirstNameLastName定义前缀索引有两个基本规则:索引必须包含最左边的一列,所以以下不是索引FirstNameTitleFirstName,Title索引不能跳过某些列,所以以下也不是索引:LastName,Title现在,你可能对其重要性并没有充分认识。当WHERE语法扩展到多列索引上,尽可能的使用靠近左边的前缀。否则优化器可能根本就不使用索引,而性能也大打折扣。帮助优化器好的性能依赖于使用存在的索引。要保证优化器使用索引,请您遵循以下步骤:使用列本身,而不使用引用列的函数和表达式。避免在查询串的开头使用通配符。只比较相同类型的列。在Where语法中包含所有AND操作符。列本身在运行一个查询的时候,使用函数或者表达式引用列会导致索引暂时顺序混乱。如果函数或者表达式引用了一列,MySQL必须按照函数或者表达式估算每一个值,然后再把结

MySQL 查询优化器的使用 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wxc6688
  • 文件大小52 KB
  • 时间2020-03-22
最近更新