1.當查詢出來的記錄過萬時,遍歷Rows的時間過長,達到1分鐘甚至更多程序代碼:rows, err := p.conn.Query(sqlStr, params...)if err != nil { log.Println("mysql query error", err.Error()) return nil, err}log.Println("conn結束:", goutil.GetCurrentTime())//延時關閉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記錄的時候,長達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}
添加回答
舉報
0/150
提交
取消