从 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 读取和累积数据的更好方法的主要内容,如果未能解决你的问题,请参考以下文章

怎么才能减缓读取kafka数据的速度

Prisma 读取数据 - 有没有更好的方法来读取嵌套数据?

从文件中读取和存储任意字节长度的整数

怎样从sql数据库中一次随机读取一条数据,而且以后随机读取出的数据不能和以前每次随机读取出的数据重复?

SQL Profiler 中的大量读取 [重复]

Oracle SQL:如何读取和增加字段