从 sql 读取和累积数据的更好方法
Posted
技术标签:
【中文标题】从 sql 读取和累积数据的更好方法【英文标题】:Better way of reading and accumulating data from sql 【发布时间】:2014-04-14 13:53:13 【问题描述】:我正在研究使用 C# 从 sql 读取数据的一些可能性,我确信存在更好的方法。
我有一个(相当复杂的)sql select 语句,它返回 3 列。例如。人员 ID、TaskID 和工作时间
我想做的是用 2 列填充另一个表,数据应该类似于:
COL1 | COL2
---------------------
"John" | "Tsk01 (2 Hours), Tsk02 (7 Hours), Tsk03 (4 Hours)"
"Peter" | "Tsk01 (4 Hours), Tsk03 (2 Hours), Tsk04 (3 Hours)"
因此,一个明显的方法是将我的 sql 语句放入数据读取器(按人排序),遍历它,然后每次我有一个新人时将数据写入我的第二个表。但这只是感觉很麻烦。一定有更简单的方法吗?
【问题讨论】:
为什么你想要一个包含逗号分隔的值列表的字段?这是一个 SQL 反模式。您开始使用的 (标准化) 结构是最佳实践。 可接受的问题...第二个表实际上是作为审计跟踪。它“重要”的只是第一列。第二列将只是附加注释。即使数据被截断也不是问题。 甚至你的审计表也应该被规范化。假设'John'
和 'Peter'
实际上在另一个表中有 id,你只会有一个 3 列整数的表,每列 4 个字节,每行总共 12 个字节(每个人/任务组合)。但是,您的字符串占用的字节数要多得多; ', Tsk02 (7 Hours)'
远远超过 12 个字节。
是的。但是表设计已经完成了一段时间,目前无法真正更改。我将不得不使用我所拥有的。
simple-talk.com/sql/t-sql-programming/…
【参考方案1】:
很麻烦,效率很低。
这里有一些你应该考虑的因素:
不要违反数据库字段的atomicity。每个字段一条信息。 在将数据提取到代码中之前,让数据库引擎完成所有工作【讨论】:
以上是关于从 sql 读取和累积数据的更好方法的主要内容,如果未能解决你的问题,请参考以下文章
Prisma 读取数据 - 有没有更好的方法来读取嵌套数据?