2015-11-28 174 views
0

我有一個包含近300萬條記錄的產品數據庫。我正在寫一個Web服務來查詢數據庫。輸出將被分配給客戶端中的一個數組進行字符串匹配(類似於你在Google的搜索框中輸入ipod類型的exprience)。關於如何優化查詢或以僅在產品刷新時創建新緩存的方式對其進行緩存的任何建議。產品數據庫將每週刷新新產品,這意味着記錄數量將隨着時間增長。Laravel 5.1查詢數百萬條記錄的數據庫

+4

如果甚至沒有看到查詢,我們該如何幫忙?您要求我們調整配方1汽車,而不向我們顯示具有規格的汽車 – davejal

+0

我不會使用數據庫來處理如此巨大的記錄。你有沒有嘗試類似ElasticSearch –

回答

1

如果您需要通過字符串的任何部分(LIKE'%string%'查詢)中的產品說明進行搜索,我建議在另一個表中使用FULL TEXT INDEX存儲唯一描述,並每週更新一次(如果需要)。所以當用戶開始輸入時,我們使用這個表格輸出建議。

當用戶點擊一個描述時,我們在產品表中搜索這個描述 - >所以我們需要在產品表中的描述列上添加INDEX。

如果您只需要匹配開始短語(LIKE'string%'query),您可以簡單地將INDEX放在產品表的描述列上。

+0

山姆,不會​​完整的索引仍然會導致服務器負載? – singh

+0

@JotiBasi它需要基準測試,並取決於數據大小,硬件和負載。如果你的mysql緩存查詢的速度比起始緩慢,而緩存沒有任何內容。如果你可以允許按鍵事件延遲一段時間,所以每個按下的按鍵都不會有查詢,並且你沒有每秒都有大量的請求,那麼它將是完全沒問題的 –

相關問題