2012-04-12 52 views
0

我有大約50,000個第三方數據饋送,每五分鐘讀取一次。這個想法是檢查更新的內容。我有以下表格:在MySQL中插入大量潛在重複行的策略

飼料

  • ID
  • 網址

帖子

  • ID
  • FEED_ID
  • 標題
  • 內容
  • 網址
  • unique_hash(基於URL +標題)

我的第一種方法是使posts.unique_hash唯一索引字段,以便在嘗試INSERT後,我得到一個失敗。大部分INSERT都會失敗(按照預期)。然而,我的問題是,我會經常需要在'posts'表上運行SELECT(對於此應用程序的另一部分),因此大量INSERTS不斷運行(有許多失敗)將消耗表的資源。

我當然可以在試圖插入INSERT之前在'posts'表上做一個SELECT,但這會佔用更多的資源。

我正在尋找最好的方法,這將使我的'職位'表的資源免費進行許多SELECT查詢。使用索引表?使用緩存機制?

回答

0

(唯一)鍵可以是多個字段,因此您不需要計算散列。您可以將一個唯一的鍵設置爲feed_id,title和url的組合,以防止插入重複信息。

除了將更多的資源用於緩存多少索引等之外,沒有太多的工作可做,因爲簡單地做一個INSERT對於服務器來說是最少的查詢。使用唯一索引只會導致插入失敗,並且無法執行選擇或查看是否應插入。

你如何從帖子中選擇你可能會有很大的不同 - 你必須告訴我們你想要退回的東西(select * from posts where feed_id = ?或其他東西等)。取決於你如何查詢它的信息將決定如何功能附加索引可能在該表上。