首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最好的方法来存储一个值来查询最新的,而不去命名?

最好的方法来存储一个值来查询最新的,而不去命名?
EN

Stack Overflow用户
提问于 2013-09-16 03:32:19
回答 2查看 69关注 0票数 0

这是我的表的结构,它存储机器的仪表读数。我需要保存所有的读数,以便我可以检索任何日期的读数,并验证任何新的读数。

我有一个关于AssetID的指数,ForDate在下降,所以最新的读数在顶部。

为这台桌子的机器找到最新的表读数太久了。我不想取消对机器的仪表读数的正常化,因为当两个或两个以上的人试图同时输入读数时,它会导致并发问题。

有什么建议可以让这件事更快吗?

编辑:这是我的LINQ2SQL查询

代码语言:javascript
复制
        Dim res = From a In db.AssetMeterReadings Where _
              a.AssetID = ast.AssetID And a.ForDate <= dAt.Date _
              And a.isInactive = False _
              Order By a.ForDate Descending, a.ApproximateReading Descending Take 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 06:58:31

您是否试图获取多个/全部AssetID的一行或最新条目?如果您试图查询许多不同资产的最新条目,那么索引对您没有多大帮助。

我建议你

  1. 添加“现在”列IsLatestReading(bit)
  2. 添加trigger for INSERT, UPDATE, DELETE以保持列IsLatestReading 只需小心递归触发器,它将导致 触发器类似于: update MyTable set IsLatestReading =0内连接删除on DELETE.AssetID = MyTable和IsLatestReading =1 update table MyTable set IsLatestReady =1 inner INSERTED.MeterReadingID = MyTable.MeterReadingID
  3. create index on IsLatestReading DESC, AssetID, ForDate

注意:如果您使用大容量插入来加载读数,您将不需要触发器,只需对列进行更新即可.

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 04:09:48

我认为您需要运行一个性能分析器来了解您的查询是否真的使用了这个索引。您没有提到RDBMS是什么,但是在SQL-Server中,查询分析器中有一个“显示执行计划”选项。

有时,如果您有单独的列索引,例如Index1 ON AssetID,Index2 ON ForDate,则查询执行得更快。另外,我不认为你应该指定订单。试著看看个别索引是如何运作的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18820032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档