自制小工具大大加速MySQL SQL语句优化(附源码)
子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引。这种连接类型类似unique_subquery。它用子查询来代替IN,不过它用于在子查询中没有唯一索引的情况下。
索引范围扫描。只有在给定范围的记录才会被取出来,利用索引来取得一条记录。
全索引扫描。连接类型跟ALL一样,不同的是它只扫描索引树。它通常会比ALL快点,因为索引文件通常比数据文件小。MySQL在查询的字段知识单独的索引的一部分的情况下使用这种连接类型。
全文索引扫描。
全表扫描。 possible_keys 该字段是指MySQL在搜索表记录时可能使用哪个索引。如果没有任何索引可以使用,就会显示为null。 key 查询优化器从possible_keys中所选择使用的索引。key字段显示了MySQL实际上要用的索引。当没有任何索引被用到的时候,这个字段的值就是NULL。 key_len 被选中使用索引的索引键长度。key_len字段显示了MySQL使用索引的长度。当key字段的值为NULL时,索引的长度就是NULL。 ref 列出是通过常量,还是某个表的某个字段来过滤的。ref字段显示了哪些字段或者常量被用来和key配合从表中查询记录出来。 rows 该字段显示了查询优化器通过系统收集的统计信息估算出来的结果集记录条数。 Extra 该字段显示了查询中MySQL的附加信息。 filtered 这个列式在MySQL5.1里新加进去的,当使用EXPLAIN EXTENDED时才会出现。它显示的是针对表里符合某个条件(WHERE子句或联接条件)的记录数的百分比所作的一个悲观估算。 3) SQL改写 EXPLAIN除了可以显示执行计划外,还可以显示SQL改写。所谓SQL改写,是指MySQL在对SQL语句进行优化前,会基于一些原则进行语句的改写,以方便后面的优化器进行优化生成更优的执行计划。该功能是通过EXPLAIN EXTENDED+SHOW WARNINGS配合使用。下面通过示例说明一下。 从上面示例中,可看到原有语句中的IN子查询被改写成为表间关联的方式。 2、统计信息 查看统计信息也是优化语句中必不可少的一步。通过统计信息可以快速了解对象的存储特征如何。下面说明主要的两类统计信息——表、索引。 1) 表统计信息 — SHOW TABLE STATUS
3、索引统计信息 — SHOW INDEX
1) 参数说明 系统参数很多,下面介绍几个。 sort_buffer_size 排序区大小。其大小直接影响排序使用的算法。如果系统中排序都比较大、内存充足且并发量不是很大的情况,可以适当增加此参数。这个参数是针对单个Thead的。 join_buffer_size (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |