【发布时间】:2014-04-08 16:12:19
【问题描述】:
EVENT_TIME 是一个索引日期时间列(下面的表定义)。而且我几乎所有的查询都基于 EVENT_TIME 列。我需要多种选项(如介于、分组、DATE(EVENT_TIME)、HOUR(EVENT_TIME) 等)来作为查询的基础。
不知道为什么下面提到的 = 和 (like and DATE(EVENT_TIME)) 条件之间存在巨大差异。
关于查询最快方式的任何建议每天-DATE(EVENT_TIME=today())、过去 4 小时等
select * from 4gc_1h_atch_enb where EVENT_TIME='2014-04-08 00:00:00'
返回 60743 行
0.062 秒 / 3.229 秒
select * from 4gc_1h_atch_enb where EVENT_TIME like '2014-04-08 00:00:0%'
返回 60743 行
449.875 秒 / 7.988 秒
select * from 4gc_1h_atch_enb where date(EVENT_TIME)='2014-04-08' and time(event_time)='00:00:00'
返回 60743 行
401.094 秒 / 9.063 秒
表格定义
mysql> show create table 4gc_1h_atch_enb \G
*************************** 1. row **********************
Table: 4gc_1h_atch_enb
Create Table: CREATE TABLE `4gc_1h_atch_enb` (
`ELEMENT_TYPE` varchar(32) NOT NULL,
`NE_VERSION` varchar(32) NOT NULL,
`NE_ID` int(10) unsigned DEFAULT NULL,
`NE_NAME` varchar(32) NOT NULL,
`EVENT_TIME` datetime DEFAULT NULL,
`ENB` varchar(32) NOT NULL,
.
.
.
TRUNCATED FOR READABILITY
.
.
.
`MarketName` varchar(32) NOT NULL,
KEY `iNE_VERSION` (`NE_VERSION`),
KEY `iNE_ID` (`NE_ID`),
KEY `iNE_NAME` (`NE_NAME`),
KEY `iEVENT_TIME` (`EVENT_TIME`),
KEY `iENB` (`ENB`),
KEY `iMarketName` (`MarketName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql>
【问题讨论】:
标签: mysql datetime select indexing datetime-format