亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查詢優化的一個問題

查詢優化的一個問題

郎朗坤 2019-05-14 09:51:14
我有一個表exchangeCREATETABLE`exchange`(`id`int(11)NOTNULLAUTO_INCREMENT,`rank`int(11)NOTNULL,`name`varchar(255)NOTNULL,`volume`varchar(255)NOTNULL,`timestamp`datetimeNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=75032DEFAULTCHARSET=utf8;每5分鐘,會記錄一記數據,每次209條左右,是當前時間209個數字貨幣交易所的成交量。我期望可以查到這樣的數據:rankname[volume(最新的144個值)]timestamp我現在采用的笨辦法是,一個個交易所去查,得到交易所列表一個個查selectvolumefromexchangewhereexchange.name='binance'orderbytimestampDESClimit144性能開銷很大,想請教下,有沒有更好的方法?
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

我有一個想法,不知道是否可行。exchange的結構不改動,新建一張表
CREATETABLE`exchange_statistics`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`name`varchar(255)NOTNULL,
`volume_statistics`textNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8;
其中volume_statistics字段記錄的是通過數組序列化或者符號分割后的最新的144個值,144個值可以是從小到大或者按時間整理好,然后每隔5分鐘最前的元素剔除,從后面加入最新的元素。
這樣每個交易所預處理好最新的144個值,獲取交易所列表直接查詢exchange_statistics即可。
exchange結構不需要改動,防止以后業務改動,有涉及統計的功能。
這種方案不知如何?
                            
查看完整回答
反對 回復 2019-05-14
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

數據量沒有超過200萬,你這個查詢速度在300ms左右,如果開啟了緩存,會更快,如果你數據量超過200萬,timestamp加索引,速度也非??捎^,不知道你的數據量如何
                            
查看完整回答
反對 回復 2019-05-14
  • 2 回答
  • 0 關注
  • 333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號