3

前段时间我写了这个问题,因为我认为查询太慢了,但经过多次试验和错误后,我发现问题是 R 中的数据摄取。这个查询现在需要 2 秒来检索大约 175000 行,但是当它运行时R,通过 input_data_1 大约需要 15 秒。执行计划告诉它是表扫描需要 100%,但我不明白为什么会有这样的差异。

任何帮助表示赞赏。

https://dba.stackexchange.com/questions/178242/queries-to-in-memory-table-are-slower-than-to-disk-based?noredirect=1#comment347134_178242

编辑

这是以防万一的代码。这与没有处理的查询相同。我只是返回已读的内容:

EXEC sp_execute_external_script
    @input_data_1 = N'SELECT DEPARTMENT, ACCOUNT, CATEGORY, YEAR, MONTH, CURRENCY, 
                             DIM1, DIM2, DIM3, DIM4, DIM5, VALUE
                      from   DATA 
                      where  YEAR = ''2013bdg''',
    @input_data_1_name=N't',
    @language = N'R',
    @script = N'OutputDataSet <- as.data.frame(t);'
    WITH RESULT SETS (([DEPARTMENT]   VARCHAR (MAX), [ACCOUNT]  VARCHAR (MAX), [CATEGORY] VARCHAR (MAX),
                      [YEAR] VARCHAR (MAX), [MONTH]     VARCHAR (MAX), [CURRENCY] VARCHAR (MAX),
                      [DIM1] VARCHAR (MAX), [DIM2] VARCHAR (MAX), [DIM3] VARCHAR (MAX), 
                      [DIM4] VARCHAR (MAX), [DIM5] VARCHAR (MAX), [VALUE]     FLOAT));
GO

编辑#2

通过反复试验,我发现缓慢是由于WITH RESULT SETS操作员造成的。我使用的(12 列)非常昂贵,而如果我将其设置为:

WITH RESULT SETS (( OK BIT not null))

只需 3 秒。

为什么会发生这种情况是个问题。

4

0 回答 0