You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server结合.NET 3.1的时序数据查询性能优化咨询

SQL Server时序数据批量读取性能优化咨询

我正在寻找SQL Server表中存储数据点后,在.NET 3.1应用中批量读取的最优方案。当前使用的表结构如下:

CREATE TABLE [DataPoints](
    [Id] [int] NOT NULL,
    [DateTime] [datetime] NOT NULL,
    [Value] [decimal](19, 9) NOT NULL,
CONSTRAINT [PK_Index] PRIMARY KEY CLUSTERED
(
    [DateTime] ASC,
    [Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
  • Id:时序ID
  • DateTime:数据时间戳
  • Value:时序数据值

当前核心问题是读取性能(数据在夜间存储,写入速度无需保证稳定)。压力测试显示,读取5年数据、涉及至少500个时序ID的1.6亿条记录,平均耗时约7分30秒。

我使用Entity Framework进行数据检索,已尝试两种方式:

  1. 逐个查询时序ID(耗时7分20秒-7分40秒)
var dataPoints = context.DataPoints
                        .AsNoTracking()
                        .AsQueryable()
                        .Where(dataPoint => dataPoint.id == id &&
                                            dataPoint.DateTimeUtc >= startDate &&
                                            dataPoint.DateTimeUtc <= endDate);
  1. 一次性包含所有ID查询(耗时7分30秒-8分10秒)
List<int> ids = new List<int>() {1, 2, 3, 4, .... 498, 499, 500 };
var dataPoints = context.DataPoints
                        .AsNoTracking()
                        .AsQueryable()
                        .Where(dataPoint => ids.Contains(dataPoint.Id) &&
                                            dataPoint.DateTimeUtc >= startDate &&
                                            dataPoint.DateTimeUtc <= endDate);

我想了解在现有SQL Server环境下,是否存在更优的读取方案以提升查询速度。此前已了解InfluxDB、Timescale、MongoDB,但希望先确认现有数据库能否满足需求。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:31:39