所有
我正在使用它作为我的select语句的条件。
WHERE RecDate >= '%s' GROUP BY DATE(RecDate), HOUR(RecDate), MINUTE(RecDate),
SECOND(RecDate) - (Second(RecDate) \% %d) LIMIT %d
目前这个查询花了太长时间。我在这里要做的是在特定日期之后收集X行数。我也不想要每一行,我想要每一行,这是GROUP部门为我实现的目标,我相信。
基本上我有一堆模拟信号被采样并以1hz(每行)放入数据库。我不想在图表上显示每次4-8小时的数据,但它没有'有意义地将所有点拉回来。
我正在尝试尽可能地利用数据库。有什么方法可以让这个查询运行得更快吗?
此致 肯
这是我桌子的创建声明。
DROP TABLE IF EXISTS `vdaq_6`.`readings`;
CREATE TABLE `vdaq_6`.`readings` (
`RigId` varchar(15) NOT NULL DEFAULT '',
`Location` varchar(45) NOT NULL DEFAULT '',
`RecDate` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`0123` double NOT NULL DEFAULT '0',
`0124` double NOT NULL DEFAULT '0',
`0118` double NOT NULL DEFAULT '0',
`0114` double NOT NULL DEFAULT '0',
`0126` double NOT NULL DEFAULT '0',
`0121` double NOT NULL DEFAULT '0',
`0141` double NOT NULL DEFAULT '0',
`0137` double NOT NULL DEFAULT '0',
`1129` double NOT NULL DEFAULT '0',
`0130` double NOT NULL DEFAULT '0',
`0108` double NOT NULL DEFAULT '0',
`0113` double NOT NULL DEFAULT '0',
`0110` double NOT NULL DEFAULT '0',
`0116` double NOT NULL DEFAULT '0',
`0120` double unsigned NOT NULL DEFAULT '0',
`0112` double NOT NULL DEFAULT '0',
`0128` double NOT NULL DEFAULT '0',
`0423` double NOT NULL DEFAULT '0',
PRIMARY KEY (`RigId`,`Location`,`RecDate`),
KEY `Index_2` (`RecDate`),
KEY `replication` (`UpdateCd`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='v2;InnoDB free: 523264 kB';
答案 0 :(得分:0)
不的小组将获得每第N行;看起来它的意思是对每N行求和或平均(其中N可能是60的偶数除数)。
如果你真的想要每个第N行,那可能会快得多;使用RecDate的订单替换组,并添加一个位置(第二个(RecDate)\ %% d)== 0。
但请告诉我们所选择的实际字段。