2010-04-19 59 views
1

我已經在MYSQL中創建了一個列車時刻表數據庫。每天有數千條路線。但除少數例外,大部分路線在每個工作日都相似,但週末不同。存儲日期我列車時刻表MYSQL

此時我基本上每天午夜更新我的SQL表,以便在接下來的24小時內獲得離開。然而這非常不方便。所以我需要一種方法在我的表格中存儲日期,所以我不必每天都這樣做。

我試着創建一個單獨的表,我爲每個路由器存儲了日期(每天都重新設置路由器),但是這使得我的查詢非常緩慢以至於無法使用。這是否意味着我將不得不按照日期存儲我的出發和到達時間?在這種情況下,包含路線的主表將會有數百萬個條目。

或者還有另外一種方法嗎?

我routetable看起來像這樣:

 
StnCode (referenced in seperate Station table) 
DepTime 
ArrTime 
Routenumber 
legNumber 
+3

查詢表100萬行不應該是緩慢的,除非你缺少一個索引或寫你的查詢,使得索引無法使用。 – 2010-04-19 16:06:57

+0

但是,如果我需要爲每一天分別輸入條目,則會有幾百萬個條目。一天包含234 000個條目,爲了搜索的目的,數據庫應該包含未來3個月的所有路線。所以我需要有2100萬條記錄。由於它的大小,這也會使數據庫難以編輯。 – AppDeveloper122 2010-04-19 16:12:03

回答

1

你是如何存儲的日期?單個日期/時間字段?這肯定會是最緊湊的表示,也是最難的索引和掃描,特別是如果你正在做以下類型的查詢:

SELECT ... 
WHERE MONTH(DepTime) = 4 AND DAY(DepTime) = 19; 

這種構建需要全表掃描撕裂除了每個日期字段並提取月份/日期。對於這種情況,最好將數據進行異化並將日期時間拆分爲單獨的年/月/日/小時/分鐘字段並將獨立字段分配給它們。有點麻煩維護,但也會加速查詢特定的時間部分非常。

0
  1. 不是存儲時刻表在日期上,你可以將它們存儲針對日(週日,週一,週二,等等)。這將消除存儲路線的日期。您可以按照預先處理的方式來處理路線,因此它們是固定的。由於列車數量約爲8000(旅客列車),天數固定(7),路線爲(50-1000),每張表格爲1,1A,如鐵路圖書出版,
    這樣可以避免儲存巨大列車時刻表的組合,因爲每個日期都被翻譯成平日之一,我們不會丟失任何數據。

  2. 您可以創建一個表格來存儲最多7天的日子。

  3. 我會建議數據庫這樣的模式,即每站是一個觸控點,而不是站ID ....

  4. ,您可以在設計中引入樞紐的概念,找出3-4個站,這是同一個城市的....

  5. 每個站是一個接觸點,它是由類似,寄宿點,HALT POINT等設施的支持......

  6. 原因,並非所有車站都是所有火車的登車點..

  7. 設施,其可在不同站的...

  8. 所有的設施不適用於所有的列車......, 例如:Kazipet是一個車站,這也是一個交界處......但是對於少數列車,在很少的路線上,它們通過車站通過,並且它也停在車站,但是,它不允許新的乘客在車站的董事會。 但是,它將允許同一個逆向路線...

+1

請改善寫作風格:)閱讀器(大寫/小寫,編號列表的錯誤號碼......) – bluish 2012-11-29 16:23:27