【问题标题】:select on nvarchar(max) column really slow在 nvarchar(max) 列上选择真的很慢
【发布时间】:2018-04-25 16:02:15
【问题描述】:

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

select Comment from StudentAssessmentComments

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

select Comment from StudentAssessmentComments where FileYear = 2016

如果我查询一个不同的、未索引的列,它的立即数(

select StaffID from StudentAssessmentComments

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

【问题讨论】:

  • 索引的目的是加快您的查询搜索。因此,根据您所用时间的结果,您的未索引列的执行速度更快。这主要是由于您的服务器数据库连接。您的服务器是否位于很远的地方?

标签: sql sql-server tsql


【解决方案1】:

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

如果一个典型的行有 1,000 个字符,那么这将是大约 2,000 个字节(宽字符)和大约 2 MB/秒。这似乎有点慢,但并非不合理。

所以,我最好的猜测是,这是您到数据库的“网络”连接,所以如果您需要数万行和完整的 cmets,您无能为力。

【讨论】:

  • 刚试过直接在服务器上运行。不到一秒。感觉挺傻的。这里的网络环境应该比那个好,所以没想到。谢谢戈登。
猜你喜欢
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多