7.使用EXPLAIN 来分析SQL和表结构_2

possible_keys    ------   显示可能应用在这张表的索引,一个或多个

          查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被实际查询使用

key   ------   实际使用的索引。如果为NULL,则没有使用索引

     查询中若使用了 覆盖索引,则该索引和查询的select字段重叠

       select 字段可以是索引的一部分,即索引中的字段可以将要查询的字段覆盖(是select后面的字段,不是where后面的字段)

key_len   ------   表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精度的情况下,长度越短遇到越好

          key_len 显示的值为索引字段的最大可能长度,并非实际使用长度,

       即key_len是根据定义计算而得,不是通过表内检索出的

rows   ------   根据表统计信息及索引选用情况,大致估算出找到所需的记录需要读取的行数

Extra   ------   包含不适合在其他列中显示但十分重要的额外信息

  1.Using filesort  说明mysql会对数据使用一个外部的索引序列,而不是按照表内的索引顺序进行读取

  MySQL无法利用索引完成的排序操作称为 ‘文件排序’,(需要避免)

  2.Using temporary  使用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by

    一般使用排序order by和 分组查询 group by 这种需要使用到索引排序的功能的时候,

    要按照创建索引时的个数和顺序来,否则很容易产生文件内排序 和 临时表 ,影响性能

    为什么要按照这个索引的个数和顺序来:一个索引,创建一棵树,如果是联合索引,第二列会放在第一列后面

    第二列也做了排序,首先根据第一列排序的结果,在第一列一样的情况下,第二列再排序

    如:A = 22  AND B = 33

    你假设一下 C = A*1000 + B,然后根据C做BTREE,以A先放,A相同的情况下按B的顺序放

    存的时候 A 先 存,确定了A的位置之后,再存B;;查的时候,也要先有A,有了A的准确位置,才能拿到B

  

  Using index   ------   表示相应的select 操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错

             如果同时出现using where ,表明索引被用来执行索引键值的查找

             如果没有同时出现 using where,表明索引用来读取数据而非执行查找动作

  Using where   ------   表明使用了 where 过滤

  Using join buffer   ------   使用了连接缓存

  impossible where   ------   where 子句的值总是 false,不能用来获取任何元祖

  select tables optimized away   ------

  distinct   ------   优化 distinct 操作,在找到第一行匹配的元组后即停止找同样值的动作

    

时间: 08-13

7.使用EXPLAIN 来分析SQL和表结构_2的相关文章

explain分析sql 语句

explain分析sql 语句 语法: explain + select 语句 explain select * from xxx where xxx; 结果解释: id: SELECT 识别符. 这是 SELECT 的查询序列号 select_type PRIMARY 子查询中最外层查询 SUBQUERY 子查询内层第一个 SELECT, 结果不依赖于外部查询 DEPENDENT SUBQUERY 子查询内层第一个 SELECT, 依赖于外部查询 UNION UNION 语句中第二个 SELE

SQL优化的四个方面,缓存,表结构,索引,SQL语句

一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO. query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条S

SQL Server表分区详解

原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理.这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的. 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等.但是数据量少的数据就不要凑这个热

【MS SQL】通过执行计划来分析SQL性能

如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO ON (开启) / SET STATISTICS IO OFF (关闭) 2.通过SQL语句执行时语法分析.编译以及执行所消耗的时间:SET STATISTICS TIME ON (开启) / SET STATISTICS TIME OFF (关闭) 3.通过执行计划查看:Ctrl + L -------------------------------

在一个SQL Server表中的多个列找出最大值

在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) DROP TABLE ##TestTable CREATE TABLE ##TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(40), UpdateByApp1Date DATE

SQL联表查询

数据库中最最常用的语法----select.简单的select语法很直白: select column from table where expression: 从((from)存储数据的地方(table)按照(where)一定的条件(expression)查找(select)我要的数据(column); 但是在实际工作中用到的比较多的往往还是多联表查询,所以在这里记下自己学习多联表查询的心得. 首先聊一聊笛卡尔积,这是几乎所有数据库书籍在讲多联表查询时第一个要讲的东西,我等P民也只能是把笛卡尔

SQL表结构

--sql server 2005 -- 1. 表结构信息查询 -- ======================================================================== -- 表结构信息查询 -- 邹建 2005.08(引用请保留此信息) -- ======================================================================== SELECT TableName=CASE WHEN C.co

读数据库所有表和表结构的sql语句

SQL获取所有数据库名.表名.储存过程以及参数列表 1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.获取所有数据库名:SELECT Name FROM Master..SysDatabases ORDER BY Name3.获取所有表名SELECT Name FROM Databas

获得sql server的table的表结构 -- 转到word中

SQL语句: select syscolumns.name,systypes.name,syscolumns.length from syscolumns join sysobjects on syscolumns.id=sysobjects.id and sysobjects.xtype='U' join systypes on systypes.xtype=syscolumns.xtype where sysobjects.name='master_location' order by sy

SQL Server查看表结构及视图,适合开发者使用,简单易用

SELECT * FROM INFORMATION_SCHEMA.TABLES SELECT * FROM INFORMATION_SCHEMA.COLUMNS 查看执行结果 SQL Server查看表结构及视图,适合开发者使用,简单易用,布布扣,bubuko.com