【发布时间】:2011-01-12 11:32:18
【问题描述】:
我的 SQL Server 2005 数据库出现了一些问题。我有一个带有订单行的表格,每一行都有一个名为XmlData 的NTEXT 字段。我想计算所有没有存储信息的字段。我正在使用这个查询:
SELECT Count(*) FROM [OrderLine] WITH(NOLOCK)
WHERE [XmlData] NOT LIKE '' AND [XmlData] IS NOT NULL
该表有 230.314 条记录,此计数查询需要几分钟时间。你们中有人知道如何提高性能吗?
注意:我无法将列的类型更改为nvarchar(max) 类型。 NOLOCK 是一位同事的小费。
我期待一些提示和解释。
【问题讨论】:
-
为什么要用
NOT LIKE与空字符串进行比较? -
为什么你不能把它改成
NVARCHAR(MAX)??这(或将其更改为XML)将是您最好的选择!NTEXT很乱,很慢,不再受支持 - 摆脱它! -
您是否有任何无法更改的系统,这取决于此字段是否为 ntext?或者,如果您解释了为什么此更改会带来好处,您将能够更改其类型?
-
看起来越来越没有理由不更改为 NVARCHAR(MAX) (这是很多不)。我将研究 NTEXT 的弃用以及 NVARCHAR(MAX) 或 XML 的使用。
标签: sql database sql-server-2005 tsql