MySQL 查询优化器的使用
ZDNet软件频道 时间:2001-05-23 作者:Susan Sales Harkins、Martin W. P. Reid |
我要评论()
本文关键词:
查询引擎总是不能正确理解你的查询意图吗?害怕的错误的时机提出错误的问题吗? Susan S. Harkins 告诉我们怎样用 MySQL 的查询优化器提高你的交流技能。
MySQL 查询优化器的使用
索引
简单说来,索引就是指向数据文件中实际记录的指针。索引包含了值对应了表中每一个值,但是 MySQL 是按照顺序存储索引值的。例如,在表employee中,你可能对字段 EmployeeNumber 进行索引。不管你怎样整理表employee,索引值始终按照EmployeeNumber进行排序。
现在假设在表中查找编号为24的雇员。MySQL对表进行搜索并在索引值为25处停止。优化器知道,索引值超过25就不会再有更多指针符合查找规则。
现在,为了能够理解下面的叙述,需要定义几个必须知道的索引术语:
单列索引只考虑一列的值。
多列索引考虑一列以上的值。
左端前缀索引是充当索引的左端列的集合。
前两个顾名思义;第三个复杂一些。多列索引有可能充当几个前缀,这是因为索引中任意从最左边开始的连续列,都可用来匹配数值。例如,假设有一个三列索引,其列名如下:LastName, FirstName,和Title。除了原来的索引,还可能有两个以上索引:
LastName, FirstName
LastName
定义前缀索引有两个基本规则:
索引必须包含最左边的一列,所以以下不是索引
FirstName
Title
FirstName, Title
索引不能跳过某些列,所以以下也不是索引:
LastName, Title
现在,你可能对其重要性并没有充分认识。当 WHERE 语法扩展到多列索引上,尽可能的使用靠近左边的前缀。否则优化器可能根本就不使用索引,而性能也大打折扣。