WEB开发网
开发学院数据库MySQL MySQL查询优化器浅析 阅读

MySQL查询优化器浅析

 2008-01-18 11:06:59 来源:WEB开发网   
核心提示: 但对下面的表达式就不会使用到索引了:column1 LIKE '%x'这是因为当首字符是通配符的时候,没办法使用到索引进行范围查找,MySQL查询优化器浅析(6),对优化器而言,如下表达式:column1 BETWEEN 5 AND 7该表达式与下面的表达式是等价的:col

但对下面的表达式就不会使用到索引了:

column1 LIKE '%x'

这是因为当首字符是通配符的时候,没办法使用到索引进行范围查找。

对优化器而言,如下表达式:

column1 BETWEEN 5 AND 7

该表达式与下面的表达式是等价的:

column1 >= 5 AND column1 <= 7

同样,MySQL也认为它们是等价的。

如果需要检查过多的索引键值,优化器将放弃使用索引范围查找,而是使用全表扫描的方式。这样的情况经常出现如下的情况下:索引是多层次的二级索引,查询条件是'<'以及是'>'的情况。

9 索引存取类型

考虑如下的查询语句:

SELECT column1 FROM Table1;

如果column1是索引列,优化器更有可能选择索引全扫描,而不是采用表全扫描。这是因为该索引覆盖了我们所需要查询的列。

再考虑如下的查询语句:

SELECT column1,column2 FROM Table1;

如果索引的定义如下,那么就可以使用索引全扫描:

CREATE INDEX … ON Table1(column1,column2);

也就是说,所有需要查询的列必须在索引中出现。

10 转换

MySQL对简单的表达式支持转换。比如下面的语法:

WHERE -5 = column1

转换为:

WHERE column1 = -5

尽管如此,对于有数学运算存在的情况不会进行转换。比如下面的语法:

WHERE 5 = -column1

不会转换为:

WHERE column1 = -5

11 AND

带AND的查询的格式为: AND ,考虑如下的查询语句:

WHERE column1='x' AND column2='y'

优化的步骤:

1) 如果两个列都没有索引,那么使用全表扫描。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:MySQL 查询 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接