这个问题既理论又实用。任何表明优化查询的有用资源的结果都将受到赞赏。
有一个大型SQL数据库,用于存储SQLXML字段中存储的大量数据。直接查询XML并不够快。
我查看了一些关于优化SQLXML的MSDN文章(即http://msdn.microsoft.com/en-us/library/aa902661(SQL.80).aspx),我知道索引可搜索的xml字段会提高搜索速度。
任何人都可以推荐任何其他资源来优化数据库,无论是在这种环境中还是在一般情况下,这些资源特别有用?一如既往,我感谢你们的帮助
答案 0 :(得分:0)
虽然没有完全回答你的问题,但你可能想要考虑一个不同的搜索策略。 SQL Server / Oracle和MySQL都非常适合存储大量关系数据,但在大多数情况下,它们在搜索文本方面并不是那么好(显然这取决于您搜索的内容和索引)。
我建议您花一点时间查看像Lucene这样的搜索引擎,因为它可能比SQL更适合您的需求?
答案 1 :(得分:0)
显示估计的执行计划。
此外:
SET STATISTICS IO ON
SET STATISTICS TIME ON
答案 2 :(得分:0)
这取决于您需要对XML执行的操作。我有一个类似的设置,其中表结构是“通用的”,任何特定于产品的东西都存放在XML字段中。
我们还注意到查询XML的难度并不是特别快......并且使用XML索引(SQL Server也提供)导致我们的数据库大小从大约1 GB跳到10 GB以上...... ..
我们现在正在为XML中的select元素做的是:
有了这个,我们可以从XML中提取某些键值(例如“ProductID”或“ProductName”),并将它们作为列存储在父表中。这是计算的,例如它始终是最新的,并且由于它也是持久的,因此它与表数据一起存储,例如,它不会经常被重新查询和重新计算。由于它与表数据持续存在,您甚至可以在其上添加索引。
这非常有效,但它仅适用于您希望从XML中删除的孤立的单值事物。对于这种情况,它是一个很好的解决方案,它确实可以加快对这些值的查询几个数量级。