带有大varchar列的SQL Server select需要时间加载
我试图运行一个简单的select查询,它在select列列表中有一个名为instructions的列,该列带有varchar(8000)。桌子上有 90000条记录,我的SQLServerManagementStudio控制台花了10秒才返回并显示完整的表数据带有大varchar列的SQL Server select需要时间加载,sql,performance,sql-server-2008,select,varchar,Sql,Performance,Sql Server 2008,Select,Varchar,我试图运行一个简单的select查询,它在select列列表中有一个名为instructions的列,该列带有varchar(8000)。桌子上有 90000条记录,我的SQLServerManagementStudio控制台花了10秒才返回并显示完整的表数据 SELECT id, name, instructions, etc.... FROM TABLE; 但是,当我从选择列表中删除指令时,执行和显示结果只需1秒。有谁能帮我理解这背后的理论吗 谢谢 Keth这里有一些明显的事情会影响时间,
SELECT id, name, instructions, etc.... FROM TABLE;
但是,当我从选择列表中删除指令时,执行和显示结果只需1秒。有谁能帮我理解这背后的理论吗
谢谢
Keth这里有一些明显的事情会影响时间,还有一些更微妙的事情。SQL Server的底层存储以及它如何存储/检索这些数据的主题本身就是一本书,其中有很多。(我个人推荐卡伦·德莱尼,但每个人都会有自己的偏好,我很感激我们应该远离主观性)
- 如果您是从服务器以外的另一台计算机连接的,则可能必须通过网络连接编组90k行指令
- SSMS控制台本身必须显示这些,这本身需要时间
- 根据您正在读取的内容与缓冲区缓存以及正在执行的其他查询的大小,您可能会对缓存施加压力,并为整个服务器生成更多的物理IO负载
- 如注释中所述,读取的数据越多,但这是否意味着从磁盘读取的数据越多?这一点在细节上要微妙得多
正如Tim Biegeleisen提到的,除非需要,否则不要阅读说明。从数据库读取更多数据并加载到应用程序中需要更长的时间。这似乎很基本。这是计算机和网络的工作方式。从数据库返回大量文本的90K记录存在延迟(即耗时)。如果您不需要这些说明,那么显然不要选择它们。在SSMS中打开“包含客户端统计信息”并运行这两个查询。一些结果将让您了解客户端显示部分需要多长时间,以及查询返回多少额外数据,这是上面列出的两个因素