今天拿到一個(gè)需求
在首頁做一個(gè)用戶支付數(shù)排名
兩個(gè)訂單表, 結(jié)構(gòu)一樣, 現(xiàn)在要把兩個(gè)表的數(shù)據(jù)做分組成用戶id來做匯總并且排名
基本簡化成一個(gè)如下的一個(gè)需求, (字太丑不要介意)
想了下基礎(chǔ)思路, 我想過左右查詢, 發(fā)現(xiàn)會(huì)有問題, 數(shù)據(jù)不一致.
現(xiàn)在使用了下用聯(lián)合查詢UNION ALL , 基本上
思路先把兩個(gè)表的數(shù)據(jù)都查出來, 并且按照用戶id分組, 再做一個(gè)篩選.
select store_id , sum(price) from
(
SELECT A.store_id, A.price as price FROM a AS A
UNION ALL SELECT B.store_id, B.price as price FROM b AS B
) as t group by store_id
基本測(cè)試數(shù)據(jù)成功 結(jié)果如圖
然后就可以把自己要的條件, 排序 分組, 等等, 加上去,還加上了排名
完成. 但后期想了一下, 這是一個(gè)坑, 復(fù)雜的語句, 而且是放置在首頁, 后期數(shù)據(jù)龐大會(huì)導(dǎo)致卡死現(xiàn)象
想了一下后期的優(yōu)化
可以使用定時(shí)跑腳本方式來解決.
1: 建表,記錄每天排名表
2: 腳本
一 : 每1小時(shí)跑一次當(dāng)前排名 按照當(dāng)天來更新數(shù)據(jù),到每天排名表
二 : 定時(shí)清理每天排名表數(shù)據(jù)
3: 查詢直接對(duì)該表做查詢操作