实现一个排行榜显示当前我的排行名次,还有我前5名和我后5名;数据量几十万,用mysql,按表里一个score字段排序,怎么sql才没有效率问题?
資料量幾十萬,用mysql,按表裡一個score欄位排序…查一次吐一次,光是磁碟IO就夠你受的了,根本輪不著再考慮SQL查詢效率。 冷資料倒是不用考慮效能問題,我猜你這是熱資料。別用mysql查了,換redis把,一個SortedSet輕鬆搞定。
這樣子的話,在sql層面上已經解決不了效率問題了吧
導出數據,用程式語言實現快速排序演算法,不能指望SQL連各種各樣的排序演算法都高效實現好,拿來就用。
這個話題有點意思,不過你的問題夠全嗎?因為資料量幾十萬,如果只以分數排序,那絕大部分人可能分數一樣啊,即使分數高達幾百萬,可能前5名,後5名都是一樣的分數。
例如現在騰訊系的那些遊戲,都是在朋友圈裡排名的,這就是另外一個問題了,很有技術含量啊
資料量幾十萬,用mysql,按表裡一個score欄位排序…查一次吐一次,光是磁碟IO就夠你受的了,根本輪不著再考慮SQL查詢效率。
冷資料倒是不用考慮效能問題,我猜你這是熱資料。別用mysql查了,換redis把,一個SortedSet輕鬆搞定。
這樣子的話,在sql層面上已經解決不了效率問題了吧
導出數據,用程式語言實現快速排序演算法,不能指望SQL連各種各樣的排序演算法都高效實現好,拿來就用。
這個話題有點意思,不過你的問題夠全嗎?因為資料量幾十萬,如果只以分數排序,那絕大部分人可能分數一樣啊,即使分數高達幾百萬,可能前5名,後5名都是一樣的分數。
例如現在騰訊系的那些遊戲,都是在朋友圈裡排名的,這就是另外一個問題了,很有技術含量啊