我有一个使用 openquery 的查询,并且花费的时间太长。 查询如下所示:
SELECT *
FROM OPENQUERY(LINKEDSERVER,
'SELECT column1, column2, column3, ..., column50
FROM someTable'
)
所以需要一个多小时。 但是,我注意到,如果我只选择一列,则只需一分钟:
SELECT *
FROM OPENQUERY(LINKEDSERVER,
'SELECT column1
FROM someTable'
)
很明显,这取决于我选择的列数。 问题是如何使 50 列的查询更快?
更新:
我仍然有问题,所以我想添加一些细节。
这与列数无关,而是与它们的累积大小有关。如果您的过滤器在两种情况下都相同,则您的查询中至少有一个非常大的列。
因此,您需要通过首先查看表的定义方式来确定哪一列是大列。尝试一次对一列运行查询,并对所有列执行此操作。这可以让你找出哪个专栏的写作速度最慢。
现在,如果您有这种非常大的列值,您将需要弄清楚是否需要该列。如果没有,那么您可以简单地将其从查询中删除,并且它应该以更快的速度执行。如果您需要减慢查询速度的列,那么您要么接受查询需要很长时间才能执行,要么将慢速列与查询分开。您可以在没有大列的情况下执行查询,然后单独执行查询的慢速部分,可能通过数据包运行。
因此,如果您想要一些快速的早期结果,那么您可以从查询中省略大列,并在稍后进行长时间运行的作业来获取这些值。因此,您的长文本和二进制大对象将稍后进入目标,但用户名和电子邮件很快就会出现。