MySQL手册版本 5.0.20-MySQL优化(二) (1)(2)

奋斗地龙哥

奋斗地龙哥

2016-01-29 13:46

MySQL手册版本 5.0.20-MySQL优化(二) (1)(2),MySQL手册版本 5.0.20-MySQL优化(二) (1)(2)

表中最多只有一行匹配的记录,它在查询一开始的时候就会被读取出来。由于只有一行记录,在余下的优化程序里该行记录的字段值可以被当作是一个恒定值。const 表查询起来非常快,因为只要读取一次!const 用于在和 PRIMARY KEY 或 UNIQUE 索引中有固定值比较的情形。下面的几个查询中,tbl_name 就是 const 表了:

SELECT * FROM tbl_name WHERE primary_key=1;

SELECT * FROM tbl_name

WHERE primary_key_part1=1 AND primary_key_part2=2;

eq_ref

从该表中会有一行记录被读取出来以和从前一个表中读取出来的记录做联合。与 const 类型不同的是,这是最好的连接类型。它用在索引所有部分都用于做连接并且这个索引是一个 PRIMARY KEY 或 UNIQUE 类型。eq_ref 可以用于在进行"="做比较时检索字段。比较的值可以是固定值或者是表达式,表达示中可以使用表里的字段,它们在读表之前已经准备好了。以下的几个例子中,MySQL使用了 eq_ref 连接来处理 ref_table:

SELECT * FROM ref_table,other_table

WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table

WHERE ref_table.key_column_part1=other_table.column

AND ref_table.key_column_part2=1;

ref

该表中所有符合检索值的记录都会被取出来和从上一个表中取出来的记录作联合。ref 用于连接程序使用键的最左前缀或者是该键不是 PRIMARY KEY 或 UNIQUE 索引(换句话说,就是连接程序无法根据键值只取得一条记录)的情况。当根据键值只查询到少数几条匹配的记录时,这就是一个不错的连接类型。ref 还可以用于检索字段使用 = 操作符来比较的时候。以下的几个例子中,MySQL将使用 ref 来处理 ref_table:

SELECT * FROM ref_table WHERE key_column=expr;

SELECT * FROM ref_table,other_table

WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table

WHERE ref_table.key_column_part1=other_table.column

AND ref_table.key_column_part2=1;

ref_or_null

这种连接类型类似 ref,不同的是MySQL会在检索的时候额外的搜索包含 NULL 值的记录。这种连接类型的优化是从MySQL 4.1.1开始的,它经常用于子查询。在以下的例子中,MySQL使用 ref_or_null 类型来处理 ref_table:

SELECT * FROM ref_table

WHERE key_column=expr OR key_column IS NULL;

详情请看"7.2.6 How MySQL Optimizes IS NULL"。

index_merge

这种连接类型意味着使用了 Index Merge 优化方法。这种情况下,key字段包括了所有使用的索引,key_len 包括了使用的键的最长部分。详情请看"7.2.5 How MySQL Optimizes OR Clauses"。

unique_subquery

这种类型用例如一下形式的 IN 子查询来替换 ref:

value IN (SELECT primary_key FROM single_table WHERE some_expr)

unique_subquery 只是用来完全替换子查询的索引查找函数效率更高了。

index_subquery

这种连接类型类似 unique_subquery。它用子查询来代替 IN,不过它用于在子查询中没有唯一索引的情况下,例如以下形式:

value IN (SELECT key_column FROM single_table WHERE some_expr)

range

只有在给定范围的记录才会被取出来,利用索引来取得一条记录。key

展开更多 50%)
分享

猜你喜欢

MySQL手册版本 5.0.20-MySQL优化(二) (1)

PHP
MySQL手册版本 5.0.20-MySQL优化(二)  (1)

MySQL手册版本 5.0.20-MySQL优化(二) (1)(2)

PHP
MySQL手册版本 5.0.20-MySQL优化(二)  (1)(2)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL手册版本 5.0.20-MySQL优化(二) (1)(3)

PHP
MySQL手册版本 5.0.20-MySQL优化(二)  (1)(3)

MySQL手册版本 5.0.20-MySQL优化(二) (1)(4)

PHP
MySQL手册版本 5.0.20-MySQL优化(二)  (1)(4)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL手册版本 5.0.20-MySQL优化(四) (1)(2)

PHP
MySQL手册版本 5.0.20-MySQL优化(四)  (1)(2)

MySQL手册版本 5.0.20-MySQL优化(四) (1)

PHP
MySQL手册版本 5.0.20-MySQL优化(四)  (1)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

为您的应用程序加上注册的限制

为您的应用程序加上注册的限制

《超级英雄》功勋获得方法及使用建议

《超级英雄》功勋获得方法及使用建议
下拉加载更多内容 ↓