如何加快我的linq查询连接到具有大量数据的表
本文关键字:数据 我的 何加快 linq 查询 连接 | 更新日期: 2023-09-27 18:23:56
我有一个使用GPS读数的应用程序。保存10秒后发送的GPS读数的表格越来越大,现在有超过200万条记录。我还有一张不超过200张唱片的桌子。我加入这两个表来获取最新的GPS读数,这需要一段时间,而且由于我的网络应用程序每30秒就会发送一次请求,因此查询速度实际上令人沮丧。谁知道我如何加快查询速度?
LinqToSQL无论如何都会转换为SQL,因此您真正需要优化的是数据库查询性能。
- 在查询分析器中检查您的查询,看看您可以优化什么
- 添加索引
- 如果可能的话,将查询发布到某个地方进行审查
在典型的GPS应用程序中,这是每个人都会面临的某种问题:)一些选项适合您。
- 通常,gps车辆报告中的查询将基于您的设备id和日期时间。因此,请尝试为这些字段创建索引
- 如果您有一个包含地理空间数据的表,请创建空间索引
- 尝试对车辆位置数据使用表分区
- 还可以尝试对最大的表进行一些反规范化,以帮助减少查询的负载
但所有这些都只会在某个时候有所帮助,直到设备不断增加的负载使服务器性能饱和。你还需要练习如何分割你的数据库。
正如Hasan Khan所说;优化数据库架构。
此外,如果这只是你需要的最新读数,那么创建另一个只保存最后n小时/天数据的表怎么样?此表将遮蔽另一个表,因为您将插入具有相同PK的相同数据,每次插入时删除"过时"行。一种方法是通过保存所有数据的表上的OnInsert触发器来维护所述表,或者如果您正在使用SP插入"所有数据"表,请在那里执行操作。
原则是这样的;在插入性能上稍作打击,在选择上获得巨大提升。