如何加速我的linq查询连接到包含大量数据的表

时间:2012-02-09 06:52:08

标签: c# .net linq-to-sql

我有一个使用GPS读数的应用程序。保持GPS读数的表格在10秒后发送,现在正在变大,现在有超过2百万条记录。我还有另一个表不超过200条记录。我正在加入这两个表来获取最新的GPS读数并且需要一段时间,而且由于我的Web应用程序每隔30秒发送一次请求,实际上它会以查询的速度令人沮丧。 有谁知道我如何加快查询速度?

3 个答案:

答案 0 :(得分:2)

LinqToSQL无论如何转换为SQL,所以你真正需要优化的是db查询性能。

  • 在查询分析器中检查您的查询并查看可以优化的内容。
  • 添加索引。
  • 如果可能,请在某个地方发布查询以供审核。

答案 1 :(得分:0)

在典型的GPS应用程序中,这是每个人都会遇到的某种问题:)有些选项可供您使用。

  • 通常,gps车辆报告中的查询将基于您的设备ID和日期时间。因此,请尝试为这些字段创建索引
  • 如果您正在使用包含地理空间数据的表格,请创建空间索引
  • 尝试使用表格分区作为车辆位置数据。
  • 同时尝试对最大的表进行少量非规范化以帮助减少查询负担

但是这一切只会有所帮助,直到增加设备的负载使服务器性能饱和为止。您还需要锻炼如何对数据库进行分片。

答案 2 :(得分:0)

正如哈桑汗所说;优化您的数据库架构。

此外,如果它只是您需要的最新读数,那么如何创建另一个仅包含最后 n 小时/天数据的表?这个表会影响另一个,因为每次插入时都会使用相同的PK删除“stale”行来插入相同的数据。这样做的一种方法是从保存所有数据的表上的OnInsert触发器维护所述表,或者如果使用SP插入“所有数据”表,则执行此操作。

校长是这样的;在插入性能方面受到轻微打击,以便在选择中获得巨大提升。