Все,Возможно ли оптимизировать этот SQL-запрос?
Я использую это как условие для моего оператора select.
WHERE RecDate >= '%s' GROUP BY DATE(RecDate), HOUR(RecDate), MINUTE(RecDate),
SECOND(RecDate) - (Second(RecDate) \% %d) LIMIT %d
В настоящее время этот запрос занимает слишком много времени. То, что я пытаюсь сделать здесь, - собрать X количество строк после определенной даты. Я также не хочу каждую строку, я хочу каждую N-ю строку, что, по моему мнению, для группы GROUP.
В основном у меня есть группа аналоговых сигналов, которые отбираются и помещаются в БД на 1 Гц (каждая строка.) Я не хочу отображать на графике около 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';
Примеры данных и ожидаемых выходных данных –