前段时间我写了这个问题是因为我认为查询太慢但经过多次试验和错误后我发现问题是R中的数据摄取。此查询现在需要2秒才能检索大约175000行,但是它在R中运行,通过input_data_1需要15秒。执行计划告诉它表格扫描需要100%,但我无法理解为什么会有这样的差异。
感谢任何帮助。
修改
以下是代码,以防万一。它与没有处理的查询中的相同。我只是回复了以下内容:
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秒钟。
为什么会出现这个问题。