go mysql rows.next_go语言中rows.Next性能问题

在Go语言中,使用rows.Next遍历2万多条数据耗时超过1分钟,而同样的操作在C#中只需10多秒。问题出现在`rows.Next()`的性能上。代码示例展示了查询和数据组织过程,包括Scan方法读取查询结果,以及数据转化为JSON。对于性能瓶颈,可能需要考虑优化SQL查询、减少内存分配或改进数据处理方式。
摘要由CSDN通过智能技术生成

下面代码中 因为数据也不算太大2W多条,但是rows.Next() 竟然执行了1分多钟,我换回C#10来秒,这让我很不理解,有大神能提点下吗?不胜感激

func queryLineInfo() string {

loginfo(log_info, log_project, "数据查询开始!")

rows, err = QuerySql(sqlstr)

loginfo(log_info, log_project, "数据查询结束!")

if err != nil {

rows.Close()

//fmt.Println("数据库查询失败", err)

get_lineinfo.Rescode = "0000"

get_lineinfo.Resmsg = "数据库查询失败!"

}

var databuff []get_lineinfo_buff

loginfo(log_info, log_project, "数据组织开始!")

for rows.Next() {

var buff get_lineinfo_buff

err = rows.Scan(&buff.LineNo, &buff.LineName, &buff.Station_id, &buff.Station_Order, &buff.Station_Name, &buff.IsUpDown, &buff.Status, &buff.Price, &buff.StartTime, &buff.EndTime)

if err != nil {

rows.Close()

loginfo(log_error, log_project, "rows.Scan失败:"+err.Error())

get_lineinfo.Rescode = "0002"

get_lineinfo.Resmsg = "数据解析失败!"

} else {

get_lineinfo.Rescode = "0001"

get_lineinfo.Resmsg = "数据获取成功!"

databuff = append(databuff, buff)

}

}

rows.Close()

get_lineinfo.Data = databuff

loginfo(log_info, log_project, "JSON转换开始!")

if jsonstr, err = json.Marshal(get_lineinfo); err != nil {

fmt.Println("Json", err)

}

loginfo(log_info, log_project, "JSON转换结束!")

return string(jsonstr)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值