主要用于SQL语句中的查询,可以显示SQL语句索引的命中情况,从而更好的利用索引,优化查询效率。
语法如下:[] ...
它是可选的,如果使用的话可以用show来查看相应的优化信息,也就是MySQL内部真正执行的查询。
列名称
描述
阐明
相关链接
ID
如果没有子查询或者联合查询,id永远为1。
Mysql会按照ID降序的顺序执行查询,如果ID相同,则从上到下执行。
类型。
常见类型
桌子
输出行引用的表。
有时您会看到 N 对应于 id 列的值。
类型
Mysql访问方法,连接访问类型。
常见类型
查询期间可能使用的索引。
该列在优化开始时创建,但在后续的优化过程中会根据实际情况进行选择,因此该列列出的索引不一定在后续过程中使用。如果该列为NULL,则表示没有相关索引,可根据实际情况检查是否添加索引。
钥匙
访问过程中实际使用的索引。
可能不会出现在 in 中(在这种情况下,即使查询中没有 where,也可能使用覆盖索引)。揭示哪个索引更有效,关键是优化器决定哪个索引可能使查询成本最小化,这是基于系统开销等因素的总和。可能存在“执行时间”矛盾。如果强制 MySQL 使用或忽略 in 中的索引,则需要在查询中使用 FORCE INDEX、USE INDEX 或 INDEX。
显示索引使用的字节数。
根据表结构计算,而非实际数据字节数,例如 (char(3)) (int(11)),在 UTF-8 字符集中,= 3*3+4=13,计算该值时需要考虑字符列对应的字符集,不同字符集对应的字节数不同。
.1.5、utf8和gbk中字符数、字节数、汉字的对应关系
參考
显示哪些字段或常量与键一起使用来从表中检索记录。显示其他表中用作索引查询中的值的字段或常量。
行
估计返回结果集需要扫描的行数。
它不是最终结果集的函数。将所有行相乘可以估算出整个查询需要检查的行数。当有限制时它会不准确。(为什么?)
额外的
mysql 查询的附加信息。
常见信息
类型:
:查询不包含子查询或联合查询。
:包含子查询或联合查询的查询中最外层查询。
:子查询在目标中,不在来自中,并且是第一个子查询。
例如:(来自演员)来自
:第一个内部子查询,它依赖于外部查询的结果集。
例如: * FROM actor WHERE IN ( FROM )
* 来自演员哪里 ( 来自哪里 =1)
* 来自演员哪里 = ( 来自哪里 =1)
:表示是子查询,但是返回的结果无法缓存,需要根据外层查询重新计算。(什么情况下会出现这种情况?)
:当子查询位于from子句中时,执行查询时,子查询的结果集将被放置在一个临时表(派生表)中。
例如:* FROM (* FROM actor) AS a. 将显示表列,其中 N 对应于 id 列的值。
union:联合查询中的第二个及后续对应类型。
例如:* FROM UNION ALL * FROM actor
如果 union 包含在 from 子查询中,则 from 子查询中的第一个标记是 。
例如:* FROM (* FROM UNION ALL * FROM actor)a
union:从 union 临时表中获取结果集,例如上面两个查询结果集中的最后一行,1,2,…标识的 id 列表表示 id 列,当 id 列表长度超过 20 时,后面的 id 会被省略,示例如上。
联合:子查询中的联合以及从联合中的第二个联合开始的所有后续联合也依赖于外部查询的结果集。
例如:* FROM actor WHERE IN ( FROM UNION ALL FROM )
union:表示第二次或后续的并集,但结果无法缓存,必须根据外层查询重新计算。(什么情况下会出现)
以下是一些常见的按效率从高到低的类型:
NULL:MySQL在优化过程中分解查询,执行时甚至不需要访问表数据或索引,例如id=-1。
例如:* FROM actor WHERE = -1
:查询的表只有一行,这是const join类型的特殊情况。(没有任何索引的情况下,只会显示一条数据,显示ALL)
const:最多匹配一条记录。由于只有一行,因此该行中的列值可以被优化器的其余部分视为常量。 const 表速度很快,因为它们只读取一次。当存在键或主键,并且 where 子句为其设置比较值时,会发生这种情况。
例如: * FROM actor WHERE = 1 (其中是主键)
:使用此索引查找,最多返回一条符合条件的记录。使用主键或唯一索引访问数据时,您会看到这一点。这可能是除 const 类型之外的最佳连接类型。
例如:* FROM actor, WHERE actor.=. (其中actor为主键,里面只有一条记录,如果有多条记录则不是。)
ref:这是一种索引访问。它只在使用非唯一索引或唯一索引的非唯一前缀时才会发生(换句话说,不可能根据值只得到一条记录)。索引与一个值进行比较,该值可能是常量,也可能是来自前一个表的多表查询的结果。如果使用的键仅匹配少量行,则此连接类型很好。
例如:* FROM ,actor WHERE .=actor. AND .=1
:与 ref 类似。不同之处在于,MySQL 在检索时会额外搜索包含 NULL 值的记录。这意味着 MySQL 必须执行第二次搜索,以在初始搜索的结果中查找 NULL 条目。
:查询中使用了两个或多个索引,然后对索引结果进行合并,这种情况下键列包含所有使用的索引,包括这些索引的最长键元素。
* 来自测试其中 = 1 或 = 2(不起作用!)
:用于优化带子查询的IN,子查询通过键来选择,子查询返回的字段组合是主键或者唯一索引。
例如:* FROM actor WHERE IN (FROM actor)
:这种连接类型类似于子查询中结果字段的组合是索引或者索引组合,但不是主键或唯一索引的情况。
例如:* 来自哪里(来自)
range:在一定范围内扫描索引。如果 where 中有 或 > ,则 ref 列为 NULL。
在进行时间比较查询时,int 的效率明显更高。
但在做项目或者直接在数据库中看数据的时候,这个 int 显然是个大问题。比如我们要
查看用户注册时间:
从其中 =1;
这时候返回值是一个int值,无法直观的看出具体时间,所以这就涉及到与int的转换问题。
PHP 的日期时间也需要做相应的转换,本文简单总结一下:
(1)PHP
int 值:
time():返回自 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
我们想要获取1970年1月1日到2012-2-10的秒数,可以通过()实现,即:('2012-2-10');
日期值:
日期([,int])
例如:直接date()返回当前时间。当然我们也可以指定它的格式:例如date('Ym-d',('2012-2-10'));
時間操作:
日期('Ymd h:i:s',('+1周'));
日期('Ymd h:i:s',('+5 小时'));
日期('Ymd h:i:s',('下一个));
日期('Ymd h:i:s',('last'));
date('Ymd h:i:s',('+ 1 day',));!!参见 int (time [, int now])
(2)mysql:
整数->
()来自表格;
->整数;
()来自表格;
時間操作:
(PHP 5 >= 5.3.0)
— 执行正则表达式搜索和替换
混合(混合 $,混合 $,混合 $ [,int $limit = -1 [,int &$count]])
() 与 () 等同,不同之处在于它仅返回与目标匹配的(可能经过转换的)结果。有关此函数工作原理的更多详细信息,请参阅 () 的文档。
返回值
如果它是一个数组,则返回一个数组,否则返回一个字符串。
如果未找到匹配项或者发生错误,则如果它是一个数组则返回一个空数组,否则返回 NULL。
例子
#1 比较 () 和 () 的示例
复制代码如下:
上述例程将输出:
复制代码如下:
大批
[0] => 答:答:1
[1] => B:C:a
[2] => 答:2
[3] => B:b
[4] => 答:3
[7] => 答:4
大批
[0] => 答:答:1
[1] => B:C:a
[2] => 答:2
[3] => B:b
[4] => 答:3
[5] => 一个
[6] => 乙
[7] => 答:4
PCRE() - 执行正则表达式搜索和替换 k() - 使用回调执行正则表达式搜索和替换 () - 返回与模式匹配的项目数组 () - 返回上次 PCRE 正则表达式执行生成的错误代码
扫一扫在手机端查看
-
Tags : select mysql创建数据库 mysql创建索引
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。