第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

go-sql-driver/mysql for rows.Next()的性能問題

go-sql-driver/mysql for rows.Next()的性能問題

MMMHUHU 2018-08-29 07:47:51
1.當(dāng)查詢出來的記錄過萬時(shí),遍歷Rows的時(shí)間過長,達(dá)到1分鐘甚至更多程序代碼:rows, err := p.conn.Query(sqlStr, params...)if err != nil {    log.Println("mysql query error", err.Error())    return nil, err}log.Println("conn結(jié)束:", goutil.GetCurrentTime())//延時(shí)關(guān)閉Rowsdefer rows.Close()//獲取記錄列if columns, err := rows.Columns(); err != nil {    return nil, err} else {    //拼接記錄Map    values := make([]sql.RawBytes, len(columns))    scans := make([]interface{}, len(columns))    for i := range values {        scans[i] = &values[i]    }    //此處遍歷在3W記錄的時(shí)候,長達(dá)1分鐘甚至更多    for rows.Next() {        _ = rows.Scan(scans...)        each := map[string]interface{}{}        for i, col := range values {            each[columns[i]] = string(col)        }        rowMaps = append(rowMaps, each)    }    return rowMaps, nil}
查看完整描述

2 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

這不是golang性能的問題,其他編程語言也會類似。一次性去拿三萬條記錄本來就是個(gè)不合理的需求,應(yīng)該通過分頁來解決,一次只取幾十到幾百條。

查看完整回答
反對 回復(fù) 2018-09-06
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

可以用創(chuàng)建多個(gè)goroutine 分段查詢數(shù)據(jù)。使用channl在線程中拿去查詢結(jié)構(gòu)進(jìn)行迭代。

查看完整回答
反對 回復(fù) 2018-09-06
  • 2 回答
  • 0 關(guān)注
  • 2784 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號