mysql 日期与索引问题
日期类型可以直接和string格式的字符串比较
select * from xxx where event_time>'2018-06-02' 可以使用索引, mysql默认会把后面的字符串转成date类型。可以使用between and
select * from xxx where date(event_time)>'2018-06-02' 不能使用索引
如果时间戳日期和时间都要比较, 最好使用两个字段保存这个时间戳, 这样可以利用索引
select * from xxx where event_time>1239237428734; -- 使用错误, 不能这么用。可以使用from_unixtime()将数字转成日期类型
将date和time合并成一个datetime
select str_to_date(concat(ICDate,' ',ICTime),'%m/%d/%y %h:%i:%s %s') from XXXX
其他索引总结:
where条件等号两边字段类型不同,不走索引
like 'XXX%' 走索引, '%XXX%'不走索引
对字段进行函数运算不走索引
组合索引 只使用后面的字段不走索引,使用前后的字段走索引. 第一个字段有参于(而且字段类型匹配 没有函数运算),那么会走索引, 第一个字段可以在sql中的任意位置
组合索引遇到第一个不等值条件 即中断后面字段使用索引
字段类型不匹配,不走索引
示例:

name varchar, addr varchar, age int。 创建组合索引为name + addr + age
select * from t_user where name like '123%' and age>19; 走索引 type=range
select * from t_user where age>19 and name like '123%' ; 走索引 type=range
select * from t_user where name =123 不走索引 type=all
select * from t_user where name='123' 走索引 type=ref
select * from t_user where addr like '上城%' and age>30; 不走索引 type=all
explain 是否使用了索引

type=ALL是全表扫描
只要不是ALL, 都能使用索引,只是使用索引的方式不同,性能也有差异==>依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL
关于explain各个字段的解释:https://www.cnblogs.com/david97/p/8072164.html
索引不是越多越好, 两个index进行merge有时还不如只使用一个index
组合索引创建的依据:select distinct(xxx)/count(*) 值越大说明区分度越高 组合索引的价值越高
什么时候创建组合索引? 单列上查询出来的数据量都很大,但是两个组合查询的结果很小 ,此时创建组合索引就比较有意义
(原始的离线度都小,组合的离散度会大???) 0.8*0.8=0.64 0.8*0.5=0.4 如果整体的数据量级别很大,也有点效果
索引的类型

BTREE的时间复杂度: https://blog.csdn.net/weixin_38399962/article/details/79409118
orderby 是否使用索引
https://my.oschina.net/u/912810/blog/325177
orderby用到的索引和where中的索引如果一致, 可以提升不少性能
字符类型的索引需要指定长度
ALTER TABLE t_yyy ADD INDEX `xxx` (`request_type` ASC, `request_param`(15) ASC);
mysql 日期与索引问题的更多相关文章
- Mysql数据库的索引原理
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...
- mysql日期时间函数2
win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢? 通过下面的研究 ...
- MySQL 日期时间函数
目录 datetime和timestamp区别: timestamp类型字段特殊性: Mysql获取日期时间函数: now() curdate() curtime() Extract() last_d ...
- 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)
一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...
- MySQL日期比较
假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: select * from product where add_time = '2013-0 ...
- MySQL 多列索引优化小记
MySQL 5.6.30 问题背景 由于爬虫抓取的数据不断增多,这两天在不断对数据库以及查询语句进行优化,其中一个表结构如下: CREATE TABLE `newspaper_article` ( ` ...
- MySQL基础、索引、查询优化等考察点
MySQL基础 MySQL数据类型 整数类型 TINYINT. SMALLINT. MEDIUMINT. INT. BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,例如:INT(1 ...
- Mysql 日期格式化 复杂日期区间查询
前言 最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用的挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等. ...
- MySQL引擎、索引和优化(li)
一.存储引擎 存储引擎,MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术 ...
随机推荐
- 洛谷P2895 [USACO08FEB]流星雨Meteor Shower
题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will ...
- VS2008中_T的作用
引用: VC++里面定义字符串的时候,用_T来保证兼容性.VC++支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改. 如 ...
- 杂项-权限管理:Spring Secutity
ylbtech-杂项-权限管理:Spring Secutity Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在S ...
- Linker Tools Error LNK2001
https://msdn.microsoft.com/en-us/library/f6xx1b1z.aspx https://www.cnblogs.com/runningRain/p/5674833 ...
- C# 播放音乐
用 .NET 自带的类库 System.Media 下面的 SoundPlayer 来播放音乐的方式,此种方式使用托管代码,应该是更为可取的方式吧 使用起来非常简单,下面稍作说明: . 支持同步.异步 ...
- 字符编码ASCII、Unicode、GB
计算机的存储都是二进制的,那么我们平时看到的各种字符都需要通过按照一定的格式转换成为二进制才能在被计算机识别与处理.这个过程便成为编码.常见的编码方式有ASCII.Unicode.GB2312等. 1 ...
- 共有11款Python 中文分词库开源软件
件过滤: 排序: 收录时间 | 浏览数 Python 中文分词库 Yaha "哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Ya ...
- CentOS 7 安装以及配置 VNC
一.安装VNC : yum install tigervnc tigervnc-server -y 二.启动vnc并设置密码: vncserver :1 三.将服务添加到防火墙: firewall ...
- Sharepoint 对于是否签出文件进行编辑区别
在库设置----版本控制设置 一.需要签出才能编辑 例如需要对以上通用盒进行修改时,若在“使用资源管理器中打开”粘贴文件时会提示必须先签出项目 签出文件后,再粘贴文件到文档库中,可以选择签入的版本类型 ...
- 6.5 系统打开缓慢,怎么办?---更新Ubuntu系统
早早的来公司打开电脑,希望看到Ubuntu能启动成功.可是,当我重启后,使用Ubuntu系统,打开界面速度非常慢,当时,又怀疑自己安装出错了.而且,6.2日Ubuntu系统的工作日志又没了.无奈,我把 ...