有個業務需求:千萬級別數據,要根據位置、白天出現時間、晚上不出現時間,出現次數大於某個範圍的複雜組合統計。
mysql在千萬級別的數據時,查詢效率就有明細的下降。而時間數據從上千萬級上升到上億級,查詢效率很慢,等待很久。
除了加索引等常規優化,想到用 shardingsphere 來分庫分表,調研之後,發現
shardingsphere 不支持having等統計查詢,對子查詢支持也不是非常友好。ShardingSphere不支持的SQL操作(having等複雜統計及子查詢)
後來發現這些數據,大部分數據其實是很難用到到,因爲業務要統計大於多少次的,並按次數倒序,於是把那些出現次數少的進行刪除,數據一下降到百萬級別的,查詢效率明細提升。
優化不光是考慮技術上的,一些技術難做到的,還要結合業務進行優化。