我正在創建一個網站,根據每日歷史股票報價進行計算。現在我有 5 個表格,對應于字母表中的不同字母(按符號組織)。
這是我用來建立表格的創建陳述句的一個例子。
CREATE TABLE `EOD_QRSTU` (
`symbol` varchar(10) NOT NULL,
`open` decimal(10,5) DEFAULT NULL,
`close` decimal(10, 5) DEFAULT NULL,
`高` decimal(10,5) DEFAULT Null,
`low` decimal(10,5) DEFAULT Null,
`volume` int(11) DEFAULT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`date`,`symbol`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
最常見的查詢是選擇兩個日期之間的特定符號的行。例如,這個表現在有大約500,000行,在兩年的范圍內,為一個特定的符號回傳大約400行需要8秒鐘。為什么會花這么長時間?像雅虎財經這樣的網站是如何將其圖表加載得如此之快的? 我一直在考慮將每只股票的資料存盤在檔案系統中的自己的檔案中,而不是這樣,誰能對這種方法提供一些見解?如果這種方式足夠快,我甚至不需要限制回傳的行數,我可以簡單地回傳檔案中的每一行。CSV是一種合適的檔案格式嗎?
如果有必要的話,目前我使用PythonAnywhere來托管網站,并使用Python和Flask-SQLalchemy來做后臺。我還計劃很快遷移到AWS,這將解決部分問題嗎?
uj5u.com熱心網友回復:
重新排列你的主鍵,把符號放在日期之前。
當索引的固定部分,即symbol在搜索范圍部分,即date之前時,索引的效果最好。
通過查看explain {query}來檢查這一點,并查看索引的位元組數和查詢計劃。
另外,如果你只使用ascii字符集,就不要把symbol變成UTF8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331999.html
標籤:
