Tra*_*eer 5 c# sql database ado.net
我有一个GPS信息的数据库表(在MS-Access中),记录了速度,位置(纬度/经度)和车辆每秒的方位.有一个显示时间的字段2007-09-25 07:59:53.问题是此表已合并来自此项目上收集的多个文件的信息.所以,例如,2007-09-25 07:59:53到2007-09-25 08:15:42可能是一个文件,在超过10秒的间隔后,下一个文件将开始,如2007-09 -25 08:15:53到2007-09-25 08:22:12 我需要填充此表中的文件编号字段,并且每个文件的分隔标准将是从上一个和下一个文件的时间间隔超过10秒.我使用C#代码迭代表并将每个记录与下一个记录进行比较,并在间隔超过10秒时更改文件编号.
我的问题是,如果使用编程解决这类问题还是使用SQL查询更好地解决了?我可以将数据加载到像SQL Server这样的数据库中,因此我可以使用的工具没有限制.我只是想知道最好的方法.
如果使用SQL解决这个问题更好,我是否需要使用游标?
当使用编程(例如C#)解决这个问题时,当需要根据更新的DataSet更新20000+记录时,更新表的有效方法是什么?我使用DataAdapter.Update()方法,似乎需要很长时间才能更新表(大约30分钟左右).
根据您的评论假设 SQL Server 2008 和 CTE:
使用 SQL 的最佳时机通常是在比较或评估大型数据集时。
像 C# 这样的迭代编程语言更适合对单个记录进行更广泛的分析或一次对行进行分析 (* R *ow * B *y * A *gonizing * R *ow)。
有关递归 CTE 的示例,请参阅此处。 MS有很好的参考。
另外,根据数据结构,您可以使用普通的方法来执行此操作JOIN:
SELECT <stuff>
FROM MyTable T
INNER JOIN MyTable T2
ON t2.timefield = DATEADD(minute, -10, t.timefield)
WHERE t2.pk = (SELECT MIN(pk) FROM MyTable WHERE pk > t.pk)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |