Explain的type, where 和 order by 组合是索引的选择

Explain的type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:

system
> const > eq_ref > ref > fulltext > ref_or_null > index_merge
> unique_subquery > index_subquery > range > index >
ALL

一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。

Explain的Extra信息也相当重要,如果此信息显示Using
filesort或者Using temporary的话,噩梦即将开始,不过也不尽然,比如说在一个WHERE ... ORDER BY ...
类型的查询里,很多时候我们无法创建一个兼顾WHERE和ORDER BY的索引,此时如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using
filesort,文件排序是好是坏需要仔细判断,说白了就是看是先过滤再排序划算,还是先排序再过滤划算,正确答案取决与数据分布的情况,具体的情况可
以参考Using index for ORDER BY vs restricting number of rows

Explain具体含义参见此链接:http://dev.mysql.com/doc/refman/5.1/en/using-explain.html

http://tech.it168.com/a2011/0225/1160/000001160766.shtml

Explain的type, where 和 order by 组合是索引的选择,布布扣,bubuko.com

时间: 2024-12-21 05:40:24

Explain的type, where 和 order by 组合是索引的选择的相关文章

mysql中explain的type的解释

导语: 很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了.这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只要我们小白好好学习,天天向上,还是很靠谱的. 当一个sql查询语句被写出来之后,其实你的工作只完成了一小半,接下来更重要的工作是评估你自己写的sql的质量与效率.mysql为我们提供了很有用的辅助武器explain,它向我们展示了mysql接收到一条sql语句的执行计划.根据explain返回的结果我

MySQL的EXPLAIN的type

连接操作的类型 (1)SYSTEM CONST的特例,当表上只有一条元组匹配 (2)CONST WHERE条件筛选后表上至多有一条元组匹配时,比如WHERE ID = 2 (ID是主键,值为2的要么有一条要么没有) (3)EQ_REF 参与连接运算的表是内表(在代码实现的算法中,两表连接时作为循环中的内循环遍历的对象,这样的表称为内表). 基于索引(连接字段上存在唯一索引或者主键索引,且操作符必须是"="谓词,索引值不能为NULL)做扫描,使得对外表的一条元组,内表只有唯一一条元组与之

MYSQL order by排序与索引关系总结

MySQL InnoDB B-Tree索引使用Tips 这里主要讨论一下InnoDB B-Tree索引的使用,不提设计,只管使用.B-Tree索引主要作用于WHERE和ORDER BY子句.这里讨论的均在MySQL-Server-5.1.42测试 CREATE TABLE `friends` ( `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uid`bigint(20) UNSIGNED NOT NULL DEFAULT '0', `fuid`

MySQL之explain 的type列 & Extra列

explain 可以分析 select 语句的执行,即 MySQL 的“执行计划. 一.type 列 MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好): | All | index | range | ref | eq_ref | const,system | null | ALL(所有) 全表扫描,MySQL 从头到尾扫描整张表查找行. mysql> explain select * from a\G ...         type: ALL 如果加上 limit 如 se

mysql explain 中type的归纳

为了更好的理解连接类型(type),将根据查询条件的不同对连接类型进行简单归纳. 表定义如下: 1.id为主键 mysql> show create table key_id; +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------

MySQL中explain的type类型

|  ALL              |  全表扫描 |  index            |  索引全扫描 |  range            |  索引范围扫描,常用语<,<=,>=,between等操作 |  ref                |  使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中 |  eq_ref           |  类似ref,区别在于使用的是唯一索引,使用主键的关联查询 |  const/system  |  单条记录

【sqlserver】索引

索引概念 索引是与视图关联的磁盘或内存中结构,可以加快从表或视图中的检索速度.索引包含由表或视图中的一列或多列生成的键. 索引特点 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间. 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能. 索引不足 创建索引和维护索引要

mysql explain type

explain执行计划中type字段分为以下几种: ALL        INDEX        RANGE        REF        EQ_REF        CONST,SYSTEM        NULL 从左至右,性能从最差到最好 type = ALL,全表扫描,MYSQL扫描全表来找到匹配的行 (因为film表中rating不是索引) mysql> explain extended select * from film where rating > 9\G ******

Mysql Explain 详解

一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二.explain输出解释 +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+| id | select_type | table | type  | possible_keys     | key