mysql 时间索引失效
来源:互联网 发布:虚拟充值软件靠谱吗 编辑:程序博客网 时间:2024/06/06 17:44
项目中查询时间断的数据发现查询时间很长。怀疑没有走时间的索引,于是explain一下
EXPLAIN select * from t_order where created_at>'2015-01-01 00:00:00' and created_at<'2017-01-01 00:00:00'
解析:
id:
表示执行的顺序,id的值相同时,执行顺序是从上到下,id的值不同时,id的值越大,优先级越高,越先执行
select_type:
1、SIMPLE表示不包含子查询和union
2、查询中若包含子查询,最外层查询则标记为:PRIMARY
3、在select或者where列表中包含了子查询,则标记为:SUBQUERY
4、在from的子查询会标记为:DERIVED
5、从union selcect出来的结果被标志为:UNION RESULT
type:
表示找到需要行的访问类型
ALL,index,range,ref,eq_ref,const,system,NULL
性能从最差到最好
key:
表示使用哪个索引
从上面的截图看没有走create_at索引。
上网查到资料:
当表的索引被查询,会使用最好的索引,除非优化器使用全表扫描更有效。优化器优化成全表扫描取决与使用最好索引查出来的数据是否超过表的30%的数据。
优化器更加复杂,其估计基于其他因素,列入表的大小,行数和I/O块的大小。
使用count整张表的数据,和条件的数据发现已经超过30%,,所以失效。在建立索引的时候,要根据列基数来建立。列基数=列中不同的数据/除以总数据。越接近1表示
重复数据越少,越适合建立索引。
解决:
根据上面的理论,时间断的范围通过订单号查询。因为订单号可以区分时间,并且列基数=1;
0 0
- mysql 时间索引失效
- mysql索引失效统计
- mysql索引的失效
- mysql索引失效原因
- mysql索引失效
- mysql--索引失效
- 索引,索引优化,mysql索引失效场景
- mysql失效时间
- mysql失效时间
- mysql索引失效的情况
- mysql索引失效的情形
- mysql索引失效原因总结
- mysql索引失效的情形
- MySQL索引失效情况分析
- MySQL-索引可能失效场景
- MySQL 索引失效问题分析
- MySQL中索引失效条件
- MySQL-索引可能失效场景
- C#开发人员应该知道的13件事情
- 双向队列
- 如何在Linux下干净卸载db2数据库
- git warning: LF will be replaced by CRLF in 解决办法
- 队列-运算后缀表达式
- mysql 时间索引失效
- 队列-实现栈
- sql执行顺序
- 5.2 链表
- JavaSE_27th_数组——冒泡排序
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
- 链表-A-单链表
- Linux~连接windows的ftp,unzip出现的问题
- 人工智能是好是坏