2011-01-12 44 views
0

我在這裏有這種情況。數據庫條目的存在取決於時間

  • 拍賣系統上市的命令爲「主動」(他們的最後期限並沒有發生)
  • 有很多的訂單,因此最好是有一個字段「活動」而不是列出它們的基礎準時查詢

我不是數據庫專家,只是一個用戶。實施這種情況的最佳方式是什麼?

  • 我必須每隔一段時間手動檢查「deadLine」字段並更改「活動」狀態嗎?
  • 是否Mysql能夠自動更改字段?
  • 查詢類型「選擇訂單」截止日期「已過去」的要求有多嚴格
  • 使用布爾標準或時間戳標準進行搜索更好嗎?它就像0,05%有效9.95%被動條目

最後,我必須將舊訂單條目移動到不同的備份表。我的觀點是使表輕量,因爲每秒可能有很多請求。我不知道有多少負載它提出了在數據庫上,無論有用於搜索

回答

1

這聽起來像你要解決一個問題有很多工作,沒有證據表明你有。特別是如果您要歸檔較舊的記錄,那麼爲什麼您不確定在創建整個系統之前無法進行基於時間的搜索?該系統專門用於維護執行與第二列相同功能的第二列時間欄。

如果您確實需要保留一個單獨的活動拍賣列表,請考慮不要使用特殊列(而且主要是浪費索引),而應該創建一個僅包含主鍵列的active_auctions表,來自拍賣。爲每個拍賣活動添加一行,並將其刪除。將此表加入主要拍賣表以獲取當前有效拍賣的列表。

+0

我做了一些思考,結果是國旗領域是廢話。拉里絕對是個好主意,非常感謝。這樣我就不必擁有一個線程,它可以將不活動的訂單移動到備份表中。一個大問題是,在訂單到期的時候,如何將其從訂單ID表中刪除是沒有辦法的。看見 ?如果我沒有訂單id表,我只列出過期時間尚未過期的訂單。但是,在訂單到期時,在訂單ID表中,我將如何刪除它?基於什麼 ? – lisak 2011-01-12 12:02:19

1

我覺得你的第二個項目符號點是可疑像布爾和時間準則之間的差異:

有大量的訂單,所以最好有一個「積極」的領域,而不是基於時間查詢列出它們。

對於'訂單'來說,最好有一個結束時間,然後通過在結束時間之前查找當前時間來查詢活動訂單。如果您將索引編入索引,活動字段會給您帶來糟糕的選擇性(位圖索引可能會更好)。此外,您必須更新行以將它們從活動狀態更改爲非活動狀態 - 並且您可以在活動訂單超過截止日期前執行操作,因爲活動標誌沒有及時更改。

  1. 是的,你將不得不輪詢活動標誌,應該是不活動的 - 使用寶貴的DBMS查詢帶寬。
  2. 不,它不能自動更改字段。
  3. 更新需要比只選擇更糟糕。
  4. 是的,你需要像結束時間戳這樣的東西。

將舊訂單移動到輔助存儲(除了主表以外,不一定在DBMS之外,更不用說在磁帶上),這可能是一個好主意。這也不是時間關鍵;您可以在訂單不再有意思之後隨時做。

相關問題