优化内存中DataTable搜索速度,IP区域汇总
生活随笔
收集整理的這篇文章主要介紹了
优化内存中DataTable搜索速度,IP区域汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?????前段時間遇到一個IP的問題,IP庫有大約50w的數據,每天登陸網頁的人數大約有5000,想做出一個柱狀圖,顯示這5000人的城市分布情況,肯定不能將這5000人去讀取5000次數據庫,那么只能將這個IP庫50w的數據放在程序的內存中,但是不做優化,直接去50w數據中篩選,無疑消耗是可怕的,經過幾日測試,現將一個比較好的解決方案提供:
? ①:查詢時候排序,然后根據二分法去讀取內存中的(非數據庫的)數據集
? ②:將數據集放在一個哈希表中,加速單個的查詢速度
? ③:有人說可以再sql中寫自定義函數處理,這個本人沒嘗試過,其他人有好的方案也可以提供
?
?讀取出來放大哈希表的代碼就不貼了,僅貼上二分法的吧,僅供參考:
①:二分法處理這個數據集
static int Dichotomy(Dictionary<int, Int64[]> arr, Int64 v){int low = 0;int high = arr.Count - 1;int mid;while (low <= high){if (low == high){return low;}mid = (low + high) / 2;if (v < arr[mid][0])//查詢的值小于中值,查詢區間就是low到新的上限 {high = mid - 1;//上限的索引值 }else if (v > arr[mid][0])//查詢的值大于中值,查詢區間就是新的下限到high {low = mid + 1;//下限的索引值 }else{return mid;}}return high;}
????? 以上純屬個人觀點,轉載請注明出處
?
?
轉載于:https://www.cnblogs.com/AK2012/archive/2012/10/24/2012-1024.html
總結
以上是生活随笔為你收集整理的优化内存中DataTable搜索速度,IP区域汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: M产品研发日志(4)---项目出差
- 下一篇: 【译】SQL Server误区30日谈-