sql server XML数据类型存储,模糊搜索的性能如何提升?
sql server XML数据类型存储,模糊搜索的性能如何提升?最近有个项目,其中一个业务是客户输入的信息字段不固定(字段合集大概100多个,客户可能只会挑选其中5-15个填写),这里我使用的是动态XML存储客户数据,自然就想到了mssql里面的xml数据类型,研究了半天时间(其中xml主索引,xml辅助索引-path索引、value索引都加了),发现这个字段内容值模糊查找性能很差:1.测试了姓名节点模糊查找;2.测试了时间段的查找,运行结果如下(数据量测试环境下是200W条,实际项目上线运行数据量会以每月15W左右的量逐步增加):
SELECT * FROM dbo.user_info_xml WHERE info_xml.value('(/customers/user_name)','nvarchar(50)') LIKE '%孙%' --19秒
SELECT * FROM dbo.user_info_xml WHERE info_xml.exist('/customers/user_name/text()') = 1--14秒
SELECT * FROM dbo.user_info_xml WHERE info_xml.value('(/customers/play_date)','datetime') > '2015-3-21'
AND info_xml.value('(/customers/play_date)','datetime') < '2015-3-24' --29秒
不知有无其他办法,可以从mssql本身的xml数据类型来讨论,也可以以这个业务来讨论抛弃mssql存储方式。
多表存储吧 顶一下,最后查一下各类策略 建议建多个表存储 议建多个加索引
页:
[1]