傳統2個陣列的巢狀查詢一般通過兩個迴圈體巢狀實現,時間複雜度為:n^2;下面是以陣列1長度為10000;陣列2為50000的亂序陣列進行測試的測試結果。(測試結果的單位都是ms)而通過建立索引物件的形式的時間複雜度為:n;這種犧牲記憶體來達到複雜度降冪的的方法能提高多少效能呢?
firefox測試結果: 平均快48倍
// 第一次
傳統的巢狀迴圈:1479
建立索引:30
// 第二次
傳統的巢狀迴圈:1852
建立索引:36
// 第三次
傳統的巢狀迴圈:1754
建立索引:38
chrome測試結果: 平均快64倍
// 第一次
傳統的巢狀迴圈:1800
建立索引:26
// 第二次
傳統的巢狀迴圈:1297
建立索引:35
// 第三次
傳統的巢狀迴圈:2522
建立索引:27
ie11測試結果:平均快11倍
// 第一次
傳統的巢狀迴圈:110431
建立索引:616
// 第二次
傳統的巢狀迴圈:7172
建立索引:689
// 第三次
傳統的巢狀迴圈:7310
建立索引:686
完整的**(實際使用中請考慮資料型別校驗和是否為空判斷)
// 情景:從陣列arr1的id拿到陣列arr2中的所有記錄,統計急了num的總和寫回到arr1中
// 模擬2個陣列
var start = 1000000
// 定義模擬2個陣列的方法;count: arr1的長度值;n: 為arr2為arr1的長度的多少倍
function getarr(count, n)
for(var i = 0; i核心**:
// 使用降冪演算法
// arr2進行分組,建立以id值為key的物件
function getarrgroup(arr, id)
var len = arr.length
var index
for(var i = 0; i < len; i++) else
} return o
}// 給arr1項的count賦值
function setarrcount(arr, o, id, fn)
console.log(arr)
return arr
}
MySQL優化之關聯查詢優化
前言 sql語句優化是很重的乙個事情。所以要去做。正文一 left join 先寫乙個sql語句看看怎麼效能如何 這樣的情況怎麼去優化呢?肯定是使用到的查詢欄位去建索引。哪就先給idx card表的card欄位加上索引看看有沒有效果。執行 alter 建完索引後再接著執行咱們的查詢語句看看怎麼樣了。...
MySQL關聯查詢優化例項
專案中發現有乙個查詢響應非常慢,花時間分析以及優化,特地記錄。1 背景 專案採用mysql資料庫,操作使用ibatis 2 查詢說明 這個查詢是每次查詢一定數目的使用者資訊,查詢中涉及到多表關聯,具體查詢sql如下 select s.name as name,s.image as image,s.i...
MySQL關聯查詢優化例項
專案中發現有乙個查詢響應非常慢,花時間分析以及優化,特地記錄。1 背景 專案採用mysql資料庫,操作使用ibatis 2 查詢說明 這個查詢是每次查詢一定數目的使用者資訊,查詢中涉及到多表關聯,具體查詢sql如下 select s.name as name,s.image as image,s.i...