SQL - 过时'行

时间:2014-04-11 12:00:50

标签: sql sql-server database select where

所以我有一个C#客户端应用程序,其中包含一个对象模型列表(每个对象模型代表MS SQL Server数据库表中的一行)。

这些包含名为RowDate的DateTime成员。

数据库表还包含一个名为RowDate的datetime2列。

RowDate基本上是上次更新或插入数据库中的行的日期和时间。

我需要一个查询来选择过时的行' - 即服务器上的RowDate>在客户端应用程序中的RowDate FOR特定行/对象。显然,它并不像在查询中放入WHERE RowDate > [whatever]那么简单,因为会有很多日期需要比较,而且它们都需要逐行进行比较。

关键在于确保“缓存”' C#应用程序中的数据是最新的,同时最大限度地减少了进出数据库的流量。

我有一些想法如何实现这一目标,但它们看起来都很丑陋,缓慢,效率低下,或者屁股很痛苦;所以我在这里抛出这个问题,希望有人能指出我正确的方向。

COULD 总是连接一些冗长的WHERE子句,但这看起来有点笨拙 - 在C#应用程序中可能有数千个对象,因此最终会成为一个非常冗长的SQL查询...肯定有更好的方法吗?也许在内存中创建某种临时表,它与数据库中的主表之间有某种交集?我在这方面缺乏经验。

我已经花了一段时间在谷歌试图查看这个,但我正在努力将我的问题提炼到搜索条件...

提前致谢。

1 个答案:

答案 0 :(得分:0)

我通常这样做是刷新对象,因为它们需要刷新。例如,如果内存中的对象表示表中的行,则只有在知道(基于应用程序/业务逻辑)您需要最新数据时才会尝试刷新该对象(例如,在您的案例基于RowDate)。

因此,不是从数据库端接近它(即"得到RowDate与内存中的对象相比已经发生变化的所有行),您可以使用"延迟加载&# 34;从应用程序端接近它的技术:只有当您使用需要刷新的对象时,才检查数据库以查看它是否有新的RowDate