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}
添加回答
舉報(bào)
0/150
提交
取消