2010-08-02 109 views
0

全部,可以優化此SQL查詢嗎?

我用這個作爲我的select語句的條件。

WHERE RecDate >= '%s' GROUP BY DATE(RecDate), HOUR(RecDate), MINUTE(RecDate), 
SECOND(RecDate) - (Second(RecDate) \% %d) LIMIT %d 

當前此查詢需要太長時間。我在這裏要做的是在某個日期之後收集X行的數量。我也不想每一排,我想每第N排,這是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

示例數據和預期輸出pls – 2010-08-02 01:47:30

回答

0

遺囑組不越來越每隔N行;它看起來像意味着總計或平均每N行(其中N大概是60的偶數除數)。

如果你確實需要每第N行,這可能會快得多; (RecDate)\ %% d)== 0替換組。然後,請向我們顯示所選的實際字段。

但是,請向我們顯示所選的實際字段。