摘要:
#distinct: 一旦mysql找到了与行相联合匹配的行,就不再搜索了,极少见 #Using index:这发生在对表的请求列都是同一索引的部分的时候,返回的列数据只使用了索引中的信息,而没有再去访问表中的行记录。是性能高的表现。#using index也叫索引覆盖explain select 阅读全文
摘要:
type 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行。 执行效率排序 #1.system #2.const * mysql能对查询的某部分进行优化并将其转化成一个常量。用于 primary key 或 unique key 的所有列与常数比较时,所以表最多有一个匹配行,读取1次, 阅读全文
摘要:
1.simple 简单查询。查询不包含子查询和union,我们碰到的大部分查询都是简单查询。 执行以下sql语句: explain select (select 1 from actor where id = 1) from (select * from film where id = 1 unio 阅读全文
摘要:
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句。 #开启慢SQL日志功能set GLOBAL slow_query_log=on;#慢SQL执行时间阈值,单位(秒) ,1毫秒=0.001#不建议超过300ms,最终结果视情况而定set globa 阅读全文
摘要:
执行以下sql: explain select gc.*, g.title from t_goods g , t_goods_cover gc where g.goods_id = gc.goods_id and g.category_id = 44 ; explain 默认第一行出现的表就是驱动表 阅读全文
摘要:
首先我们来谈一谈冗余索引会带来的问题: 1.过多的索引降低了写入数据的效率,因为在写入数据时需要更新索引,这样需要花很多的时间。 2.太多的索引增加了查询优化器的选择时间。 3.不合理的使用索引,会大幅占用磁盘空间,因为索引也是需要占用磁盘空间来进行存储的,有时候会存在索引比表数据占用的存储空间还要 阅读全文
摘要:
在t_content中建了符合索引 情况一,当排序中出现了索引的左侧列,则允许使用索引排序,且同时支持升序和降序 情况二,在多字段排序中,左侧列必须是升序,且顺序和索引的左右顺序必须一致,否则会走文件排序,文件排序会进行把所有数据扫描一遍,然后进行重新计算排序,类似于全表扫描,甚至效率比全表扫描更低 阅读全文
摘要:
1.索引选择性太差,当查询影响行数大于全表的25%的时候,即使创建了索引,但mysql查询优化器还是可能会走全表扫描 2.使用了<>,not in 无法使用索引 3.is null会使用索引,但is not null 不会使用索引 4.在一张表中创建了复合索引,where 子句跳过左侧索引列,直接查 阅读全文