use*_*499 2 sql t-sql sql-server
SQL Server 2008 R2.我在桌子上做了大约70,000行的选择.如果我尝试查询nvarchar(max)列,其中最长的字符串是2,433个字符,则需要66秒.
select Comment from StudentAssessmentComments
Run Code Online (Sandbox Code Playgroud)
通过索引列过滤到17,000行仍需要约17秒.
select Comment from StudentAssessmentComments where FileYear = 2016
Run Code Online (Sandbox Code Playgroud)
如果我查询另一个未索引的列,则立即(<1秒).
select StaffID from StudentAssessmentComments
Run Code Online (Sandbox Code Playgroud)
nvarchar(max)列执行得如此糟糕是正常的吗?如果没有,有没有人有任何建议?谢谢你的帮助.
我猜你有一个相对较慢的网络连接到数据库.你给出的两个时间都非常接近每秒1000行.
如果一个典型的行有1,000个字符,那么这将是大约2,000字节(宽字符)和大约2兆字节/秒.这似乎是缓慢的一面,但这并非不合理.
所以,我最好的猜测是这是你与数据库的"网络"连接,所以如果你需要成千上万的行和完整的评论,你就无法做到这一点.