鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ mysql大數(shù)據(jù)量的統(tǒng)計(jì),太耗時(shí),php超時(shí)了

mysql大數(shù)據(jù)量的統(tǒng)計(jì),太耗時(shí),php超時(shí)了

請(qǐng)問(wèn),我想做個(gè)數(shù)據(jù)統(tǒng)計(jì)的功能,
我先在order表取出order_id,再去order_detail表in(order_id)取出數(shù)據(jù)
然后在php中,做統(tǒng)計(jì)!
現(xiàn)在業(yè)務(wù)量激增,致使查詢一個(gè)月的信息統(tǒng)計(jì),就超時(shí)了!請(qǐng)問(wèn)有什么好的優(yōu)化辦法嗎?請(qǐng)指教一下!

回答
編輯回答
拼未來(lái)

分開(kāi)來(lái)一次不要查全部的 比如說(shuō)你有100W條數(shù)據(jù) 做統(tǒng)計(jì)他也不可能一次看100W條你可以以分頁(yè)的形式統(tǒng)計(jì)或者默認(rèn)條件統(tǒng)計(jì),這樣就不會(huì)超時(shí)啦

2018年7月4日 07:26
編輯回答
檸檬藍(lán)

在大數(shù)據(jù)和聯(lián)合查詢方面,mysql 做的并不好

方法一:

  1. 保證order_id字段都做了索引
  2. 然后通過(guò)php控制一條條用 select * from order_detail where order_id = ? 做查詢。但要求內(nèi)存夠大

方法二:
1 order和order_detail的數(shù)據(jù)換到hbase里,做數(shù)據(jù)統(tǒng)計(jì)和時(shí)序數(shù)據(jù),這是它的強(qiáng)項(xiàng)

2018年2月5日 05:25
編輯回答
脾氣硬

給你個(gè)思路:1.比如12W數(shù)據(jù);分4次查詢;每次得到一個(gè)結(jié)果,緩存到redis;求出結(jié)果,把這個(gè)結(jié)果值和此次統(tǒng)計(jì)的最后一個(gè)orderid值(如果自增)寫(xiě)入一個(gè)key;結(jié)合crotab每天凌晨統(tǒng)計(jì)一次,并更新進(jìn)redis中;真正執(zhí)行http請(qǐng)求過(guò)來(lái)獲取統(tǒng)計(jì)結(jié)果的時(shí)候;取出統(tǒng)計(jì)的結(jié)果 + 之前存下的orderid后面的新數(shù)據(jù)即可得到數(shù)據(jù);可供參考

2017年6月14日 09:33