我需要得到的长度*sql.Rows
before我开始 Next() 循环来获取值。一种方法是通过循环 Next() 两次来创建行切片,获取计数,然后循环该新切片以提取值,但这似乎效率很低,所以我希望有一种更好的方法做这个。
查看文档,我没有看到任何提及可以使用的 Count 函数或 Length 函数:https://golang.org/pkg/database/sql/#Rows https://golang.org/pkg/database/sql/#Rows
看看 Go 代码,我在结构中看不到任何对我有帮助的东西(尽管我可能会遗漏一些东西,所以希望有第二双眼睛在这里):https://github.com/golang/go/blob/master/src/database/sql/sql.go#L1714 https://github.com/golang/go/blob/master/src/database/sql/sql.go#L1714
当然有某种方法可以比仅仅循环 Next() 两次更好吗?
我意识到我也可以进行单独的计数查询,甚至可以在其他选择中包含 count(*) ,但我也宁愿避免这种情况。这是针对 Go ORM 项目的,我不想使 select 语句过于复杂,并且我宁愿尽可能避免篡改他们的构建请求。
Thanks.
您基本上列出了您的选择。没有任何隐藏功能可以为您提供行数。
请注意,某些特定于数据库的驱动程序可能支持此功能,但通用接口不支持。
另请注意,如果您计划迭代行并无论如何读取它们,这意味着您不应该担心的开销可以忽略不计。如果行数非常大并且查询返回很多数据并且您希望避免为所有数据分配内存,则执行SELECT COUNT(*)
事先查询,这样您就会知道结果的数量(但要知道,如果同时插入或更新记录,则下一个查询的结果可能会发生变化)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)