av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:101日期:2022-06-19 15:34:09

問題描述

1.當(dāng)查詢出來的記錄過萬時,遍歷Rows的時間過長,達(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())//延時關(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記錄的時候,長達(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}

問題解答

回答1:

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

回答2:

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

相關(guān)文章:
主站蜘蛛池模板: 国产激情视频网站 | 欧美色视频免费 | 欧美一级欧美三级在线观看 | 亚洲综合精品 | 国产精品18久久久久久白浆动漫 | 亚洲综合视频一区 | www.蜜桃av.com| 日皮视频免费 | 久热久热 | 日本成人区| 国产成人精品久久二区二区91 | 狠狠操电影 | av资源中文在线天堂 | 一级片在线观看 | 亚洲精品一区二区在线观看 | 国产视频久久久久 | 国产精品久久久久久久久久软件 | 国产农村妇女精品一二区 | 日韩欧美中文字幕在线观看 | 在线亚洲电影 | 亚洲一区二区三区免费视频 | 国产精品欧美日韩 | 日韩av网址在线观看 | 国产精品久久久久久久久久久久冷 | 国产欧美日韩一区二区三区在线 | 精品三级在线观看 | 亚州精品天堂中文字幕 | 91久久精品一区二区二区 | 91精品国产91久久综合桃花 | 91精品久久久久久久久中文字幕 | 91在线视频观看免费 | 欧美99 | 国产片一区二区三区 | 九热在线 | 国产精品一区二区无线 | 日本在线黄色 | 在线播放国产一区二区三区 | 成人美女免费网站视频 | 午夜影院视频在线观看 | 中文字幕在线一区 | 黄网站免费在线看 |