WEB开发网
开发学院数据库MySQL MySQL Explain详解 阅读

MySQL Explain详解

 2008-09-03 11:09:02 来源:WEB开发网   
核心提示: 对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取,MySQL Explain详解(8),如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,该联接类型是不错的,ref可以用于使用=或<=>操作符的带索引的列,如果联接不

对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。

ref可以用于使用=或<=>操作符的带索引的列。

在下面的例子中,MySQL可以使用ref联接来处理ref_tables:

select*FROMref_tablewherekey_column=expr; 
select*FROMref_table,other_table 
whereref_table.key_column=other_table.column; 
select*FROMref_table,other_table 
whereref_table.key_column_part1=other_table.column 
ANDref_table.key_column_part2=1;

例如:

mysql>dropindexidx_t3_idont3; 
  QueryOK,1000rowsaffected(0.03sec) 
  Records:1000Duplicates:0Warnings:0 
  mysql>createindexidx_t3_idont3(id); 
  QueryOK,1000rowsaffected(0.04sec) 
  Records:1000Duplicates:0Warnings:0 
  mysql>explainselect*fromt3,t4wheret3.id=t4.accountid; 
  +----+-------------+-------+------+-------------------+-----------+---------+----------------------+------+-------+ 
  |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra| 
  +----+-------------+-------+------+-------------------+-----------+---------+----------------------+------+-------+ 
  |1|SIMPLE|t4|ALL|NULL|NULL|NULL|NULL|1000|| 
  |1|SIMPLE|t3|ref|PRIMARY,idx_t3_id|idx_t3_id|4|dbatest.t4.accountid|1|| 
  +----+-------------+-------+------+-------------------+-----------+---------+----------------------+------+-------+ 
  2rowsinset(0.00sec)

上一页  3 4 5 6 7 8 9 10  下一页

Tags:MySQL Explain 详解

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