Mysql

創建 24 小時數據表 - 建議/改進

  • August 19, 2014

我打算有一個表格來儲存基於每小時的數據,簡而言之,我有一個包含 24 小時數據的文件,我需要使用它來填充每小時的條形圖/折線圖。

下面是一個範例 24 小時數據文件

08/18/2014: 00:00 UTC,2108,259,39786,59,32,501
08/18/2014: 01:00 UTC,2461,358,50456,28,34,670
08/18/2014: 02:00 UTC,2929,501,65487,41,69,983
08/18/2014: 03:00 UTC,2903,545,68849,88,66,1004
08/18/2014: 04:00 UTC,2796,385,65972,32,59,917
08/18/2014: 05:00 UTC,2860,633,67756,16,59,976
08/18/2014: 06:00 UTC,3053,756,77406,136,74,1190
08/18/2014: 07:00 UTC,3889,757,100002,57,114,1657
08/18/2014: 08:00 UTC,4389,808,120638,75,130,1916
08/18/2014: 09:00 UTC,4243,1029,141171,108,139,2198
08/18/2014: 10:00 UTC,4132,1118,135581,104,132,2079
08/18/2014: 11:00 UTC,3964,784,120932,78,112,1903
08/18/2014: 12:00 UTC,3893,842,123153,125,101,1844
08/18/2014: 13:00 UTC,4537,939,141358,51,149,2263
08/18/2014: 14:00 UTC,4897,1067,169224,105,136,2693
08/18/2014: 15:00 UTC,5068,1276,183193,199,140,2827
08/18/2014: 16:00 UTC,4816,1028,177811,333,151,2590
08/18/2014: 17:00 UTC,4359,890,154355,257,121,2159
08/18/2014: 18:00 UTC,4204,792,147255,238,88,1988
08/18/2014: 19:00 UTC,4858,894,148851,306,119,2113
08/18/2014: 20:00 UTC,4371,835,147524,280,133,2014
08/18/2014: 21:00 UTC,4531,702,136845,308,112,1861
08/18/2014: 22:00 UTC,3685,654,107627,174,68,1475
08/18/2014: 23:00 UTC,3170,468,86662,226,70,1073

我的表結構是

CREATE TABLE hourly_data
(
   id INT PRIMARY KEY AUTO_INCREMENT,
   date DATE NOT NULL,
   hour INT NOT NULL,
   f1 INT NOT NULL,
   f2 INT NOT NULL,
   f3 INT NOT NULL,
   f4 INT NOT NULL,
   f5 INT NOT NULL,
   f6 INT NOT NULL,
   inserted timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

這會是一個好方法嗎?我將需要檢索兩個時間戳之間的數據、給定小時的數據等。我最初想為每個小時設置一列,這樣我在給定的一天就只有一行,而不是 24 行。

歡迎提出建議/改進。

您的實體基於小時,而不是天,因此您應該像您所做的那樣每小時一排,而不是連續一整天。

我不明白當您說兩個時間戳之間的數據時,時間戳是指“插入”列,還是指數據文件上的日期和時間。如果是後者,那麼為您的日期和小時設置一個日期時間列,而不是兩個單獨的列,將有助於您進行比較。您可以在此日期時間列上放置一個索引,當您想要獲取兩個日期時間甚至一個特定日期時間之間的數據時,它會為您提供超快的結果。

引用自:https://dba.stackexchange.com/questions/74332