我的sql server 2005数据库有一些问题。我有一个带有订单行的表,每一行都有一个名为NTEXT
的XmlData
字段。我想计算所有没有存储信息的字段。我正在使用以下查询:
SELECT Count(*) FROM [OrderLine] WITH(NOLOCK)
WHERE [XmlData] NOT LIKE '' AND [XmlData] IS NOT NULL
这个表有230.314条记录,这个计数查询需要几分钟。你们中有人知道如何提高表现吗?
注意:我不能将列的类型更改为
nvarchar(max)
类型。诺洛克是一个同事的小费。我期待一些提示和解释。
最佳答案
为了避免昂贵的lob读取,将[XmlData] NOT LIKE ''
替换为DATALENGTH([XmlData])>0
-DATALENGTH
不需要读取每行的lob值。
另外,正如其他人所建议的:如果可能的话,使用nvarchar(max)而不是ntext。