使SQL Server中的XML更快地转换为表

本文关键字:转换 SQL Server 中的 XML | 更新日期: 2023-09-27 18:25:24

我在数据库中有一个字段是XML,因为它表示在C#/VB.Net中使用的类。问题是在初始操作之后,大部分(但不是全部)操作都在SQL Server中完成。这意味着XML字段是动态转换的。

随着我们得到越来越多的字段和记录,这个操作变得越来越慢。我认为速度较慢的是将所有这些字段转换为其他数据类型。

因此,为了加快速度,我想了几种方法:

有一组表来表示XML数据的不同部分。我只会在插入/更新时使用一个触发器来读取这些表,该触发器会拒绝任何更改。当我的"主"表更新XML时,它会关闭触发器,用新值更新表,然后重新打开触发器。

我们使用XML的唯一真正原因是,将它转换为C#/VB.Net中的类真的很容易。但我已经到了这样的地步,我可能会编写一个例程,它会占用所有的位和块,并将其转换为一个类和一个函数,以实现另一种方式(class->tables)。

有人能给出更好的方法吗?我不赞成使用XML结构。我担心的是,如果我们有单独的表来加快SQL处理,并且有人更改了该表中字段的值,我们必须确保XML得到更新。或者不允许此人更新。

TIA-Jeff。

使SQL Server中的XML更快地转换为表

保存对象的目的是什么?如果说除了状态的持久性之外,你没有给自己任何好处,也没有正确地分离关注点。若它们是状态的持久性,那个么至少要从属性和字段中创建列(只要在重构时留下一个内部方法来设置值,就可以包括私有列)。

抛开你正在做的事情的智慧,你可能会考虑创建一个XML索引。这将帮助您开始:http://msdn.microsoft.com/en-us/library/ms345121%28v=sql.90%29.aspx

其基本思想是,正确的索引可以"预分解"XML,并自动构建您想"手动"执行的sor表。一个缺点是,如果您存储了大量的XML,这可能会导致存储需求激增。