這是關於一個網站,有10個產品飼料。 Feed每天導入多次。在每個輸入階段,我想保存在每個項目的sku
和price
的表格中(如果價格下降超過10%,則通過郵件發出警報)。優化日誌數據記錄的表結構
目前我存儲這些數據,如下所示:
primary_key sku price datetime
1 XYX 1 2015-04-02 20:10:59
2 ZYZ 2 2015-04-02 20:10:59
3 XYX 2 2015-04-03 20:10:59
4 XYX 0.5 2015-04-04 20:10:59
對於SKU XYX
價格演變是1 - > 2 - > 0.5。在這個階段,我想發送一封警告郵件。我知道如何去做。問題在於,對於每個產品Feed,表格會增加大約50,000行。當試圖通過如下查詢得到結果時:
SELECT sku,
group_concat(cast(price as char(10)) separator '->')
FROM table1
GROUP BY sku
ORDER BY datetime
......它至少需要5秒鐘。雖然時間過去了,但表格會有更多的行並且查詢時間會增加。例如,我可以刪除4天以前的記錄(因爲週末)。
我想使這個表如下:
id sku price
1 XYX 1->2->3->2.3
2 VZV 5->6->5->5.5
...但在這種情況下,我不會是「能」按日期來刪除舊記錄,價格欄將不得不text/blob可能會對查詢時間合併(php + mysql)產生很大影響。
什麼是運行速度最快的查詢?
謝謝!
大量的數據佔用大量的空間。大量的數據需要大量的時間來處理它。它看起來像你現在擁有正確的結構。 – 2015-04-02 18:53:55
您需要在sku和價格列上添加索引。索引有助於優化查詢執行。 – akr 2015-04-02 18:54:28
@ user2411276:在'sku'上添加索引只會使「內部服務器錯誤」崩潰腳本,我試過了。 – valicu2000 2015-04-02 19:02:37