日期类型可以直接和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

参考: https://stackoverflow.com/questions/2758486/mysql-compare-date-string-with-string-from-datetime-field

其他索引总结:

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 日期与索引问题的更多相关文章

  1. Mysql数据库的索引原理

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  2. mysql日期时间函数2

    win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢?   通过下面的研究 ...

  3. MySQL 日期时间函数

    目录 datetime和timestamp区别: timestamp类型字段特殊性: Mysql获取日期时间函数: now() curdate() curtime() Extract() last_d ...

  4. 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)

    一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...

  5. MySQL日期比较

    假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: select * from product where add_time = '2013-0 ...

  6. MySQL 多列索引优化小记

    MySQL 5.6.30 问题背景 由于爬虫抓取的数据不断增多,这两天在不断对数据库以及查询语句进行优化,其中一个表结构如下: CREATE TABLE `newspaper_article` ( ` ...

  7. MySQL基础、索引、查询优化等考察点

    MySQL基础 MySQL数据类型 整数类型 TINYINT. SMALLINT. MEDIUMINT. INT. BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,例如:INT(1 ...

  8. Mysql 日期格式化 复杂日期区间查询

    前言 最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用的挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等. ...

  9. MySQL引擎、索引和优化(li)

    一.存储引擎 存储引擎,MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术 ...

随机推荐

  1. jcrop的bug

    1 360(7.1.1.620,内核:31.0.1650.63)的极速模式下,出现裁剪框后,鼠标点击,页面就会滑动到底部. 查看了下源码,发现是下面的代码: function watchKeys() ...

  2. POJ2420:A Star not A Tree?

    我对模拟退火的理解:https://www.cnblogs.com/AKMer/p/9580982.html 我对爬山的理解:https://www.cnblogs.com/AKMer/p/95552 ...

  3. Log4Net日志记录介绍

    原文地址 : http://www.cnblogs.com/wolf-sun/p/3347373.html#3009010 简介 log4net库是Apache log4j框架在Microsoft . ...

  4. 【转】Unity3D如何制作落叶效果

    原文地址:http://hi.baidu.com/cupgenie/item/c23861df692f59e3b3f777a8 创建一个粒子系统 GameObject>Create other& ...

  5. 问题7:如何实现用户的历史记录功能(最多n条)

    实例:制作猜字游戏,添加历史记录功能,显示用户最近猜过的数字 解决方案:使用容量为n的队列存储历史记录 使用标准库colections中的deque,一个双端循环队列 程序退出前,可以使用pickle ...

  6. 安装pyenv版本管理

    系统:Centos7.4 安装pyenv是为了更好的管理python的版本. 在进行安装操作之前,首先使用普通用户test,进行操作,如下: #安装之前先安装依赖的库 [test@localhost ...

  7. 关于KMeans 最外围点移除实验(其中心保持不变)

    import matplotlib.pyplot as plt from sklearn.datasets import make_blobs import numpy as np X,labels ...

  8. windows下primer3-py安装

    primer3是由怀特黑德生物医学研究所Steve Rozen等人发起的一个自动寡核苷酸分析和设计的开源项目,被广泛应用在分子生物领域.primer3-py是用python语言封装的primer3的A ...

  9. eos命令

    ps -ef|grep javakill -9 端口号cd /opt/sudytrue>nohup.outnohup eos7.5/startServer.sh &

  10. 3.Windows应急响应:蠕虫病毒

    0x00 前言 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播, 每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序.常见的蠕虫 ...