MySQL Internals Optimizer
范围(range)或宽度内。这些称为范围条件,最常看到的是带>,>=,<,<=,IN,LIKE,BETWEEN的查询表达式。
对优化器来说,如下表达式: column1 IN (1,2,3)
如下语句,优化器也会用到索引(范围查询range search) column1 LIKE ''x%''
同样,如下两个语句也是一样的 column1 BETWEEN 5 AND 7
如果查询的条件,检索了太多的索引键,优化器可能转变RANGE联接类型为ALL JOIN联接类型。像这种转变,特别可能在<和>条件和多级第二索引(secondary indexes)中。源代码见:/myisam/mi_range.c,mi_records_in_range()(MyISAM索引)。
INDEX联接类型 考虑这个查询 SELECT column1 FROM Table1;
SELECT column1, column2 FROM Table1; 只有当索引被定义成如下,优化器会使用JOIN联接类型为INDEX:join type = index CREATE INDEX ... ON Table1 (column1, column2);
INDEX MERGE联接类型
使用索引合并(INDEX MERGE),当表的条件可转化成如下:
如下查询就用了索引合并(INDEX MERGE): SELECT * FROM t WHERE key1=c1 OR key2<c2 OR key3 IN (c3,c4); SELECT * FROM t WHERE |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |