Sql 选择空字符串很慢

Sql 选择空字符串很慢,sql,tsql,Sql,Tsql,为了加快查询速度,我注意到由于某种原因,添加到查询中的空列越多,查询速度就越慢 仅使用Id列,查询将在大约1秒内返回100k条记录 如果我加上大约20个空列,它将变为4秒 问题 -SQL中字符串的默认数据类型是什么? -有没有办法加快速度 SELECT Id, '' as col1, '' as col2, '' as col3 FROM myTable 这将取决于myTable中的行数。例如:如果mytable上有905k行,那么SQL基本上会为905k行创建20个带

为了加快查询速度,我注意到由于某种原因,添加到查询中的空列越多,查询速度就越慢

仅使用Id列,查询将在大约1秒内返回100k条记录

如果我加上大约20个空列,它将变为4秒

问题 -SQL中字符串的默认数据类型是什么? -有没有办法加快速度

SELECT Id,
    '' as col1,
    '' as col2,
    '' as col3
FROM myTable

这将取决于myTable中的行数。例如:如果mytable上有905k行,那么SQL基本上会为905k行创建20个带“”的列

我只是在我自己的有805k行的桌子上试过。对于我添加的每一列增量,SQL都会为每一行创建值


希望这有助于您更清楚地理解它。

默认数据类型似乎是varchar1-您可以将其插入临时表并检查临时表结构以确认。您可以尝试的一个选项是声明一个变量并使用它,而不是使用空格:

declare @space varchar(40) = ''

SELECT 
   id,
   @space as col1,
   @space as col2,
   @space as col3
FROM dbo.[table]

问题在于你们的执行计划,因为索引覆盖率和统计数据。您可以使用Id上的新索引来加快它的速度。空字符串中的列是varchar1。@Deadsheep39,但当我添加这些新的空列时,速度很慢,并且仅使用Id时没有性能问题