【发布时间】:2013-07-10 08:31:49
【问题描述】:
我正在开发一个 C# 应用程序,它从 MS SQL 2008 或 2008 R2 数据库加载数据。该表如下所示:
ID | binary_data | Timestamp
我只需要获取最后一个条目和二进制数据。此表的条目是从另一个程序不规则添加的,因此我无法知道是否有新条目。 哪个版本更好(性能等),为什么?
//Always a query, which might not be needed
public void ProcessData()
{
byte[] data = "query code get latest binary data from db"
}
对
//Always a smaller check-query, and sometimes two queries
public void ProcessData()
{
DateTime timestapm = "query code get latest timestamp from db"
if(timestamp > old_timestamp)
data = "query code get latest binary data from db"
}
binary_data 字段大小约为 30kB。函数“ProcessData”将每分钟调用几次,但有时可以每 1-2 秒调用一次。这只是具有大量线程/数据库访问的更大程序的一小部分,所以我想要“最轻”的解决方案。谢谢。
【问题讨论】:
-
尝试使用您的数据和用例自行测试...?
-
取决于不规则更新的频率以及二进制数据的大小,但我会说除非它接近您检查的频率,否则最好使用 2 查询解决方案。
-
IMO,这将取决于二进制数据新条目的比例。但是为什么你不能总是响应时间戳,如果没有新内容,Data = NULL?
标签: c# sql sql-server database performance