sql - 在 nvarchar(max) 列上选择非常慢

标签 sql sql-server t-sql

SQL Server 2008 R2。我正在对大约 70,000 行的表进行选择。 如果我尝试查询 nvarchar(max) 列,其中最长的字符串为 2,433 个字符,则需要 66 秒。

select Comment from StudentAssessmentComments

按索引列过滤 17,000 行仍需要大约 17 秒。

select Comment from StudentAssessmentComments where FileYear = 2016

如果我查询不同的未索引列,则立即查询(< 1秒)。

select StaffID from StudentAssessmentComments

nvarchar(max) 列表现如此糟糕是否正常?如果没有,有人有什么建议吗?感谢您的帮助。

最佳答案

我猜测您与数据库的网络连接相对较慢。您给出的两个计时都非常接近每秒 1,000 行。

如果典型的行有 1,000 个字符,那么这将是大约 2,000 字节(宽字符)和大约 2 MB/秒。这看起来有点慢,但并非没有道理。

所以,我最好的猜测是,这是您与数据库的“网络”连接,因此如果您需要数万行包含完整注释的行,您无能为力。

关于sql - 在 nvarchar(max) 列上选择非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256417/

相关文章:

c# - 没有排序顺序的 SQL Server 唯一约束

sql - 从 SQL Server 中的重复数据填充不同的列表

表中每一列的 SQL 循环

sql - T-SQL Select where "IN"非常糟糕 性能影响

mysql - 在 MySQL 中按首字母选择最大数字组

sql-server - ";1"在 MS SQL 中调用存储过程后?

sql - 什么会提供更好的性能,每个表或全局的专用 pgsql 触发器函数?

sql-server - SQL Server 2008 行到列

MySql "cannot update parent row"当我有 "ON UPDATE CASCADE"时

mysql - 在 MySQL 中使用登录时间戳统计活跃用户