51Testing软件测试论坛

标题: sql server XML数据类型存储,模糊搜索的性能如何提升? [打印本页]

作者: 测试积点老人    时间: 2019-12-17 13:15
标题: sql server XML数据类型存储,模糊搜索的性能如何提升?
sql server XML数据类型存储,模糊搜索的性能如何提升?
最近有个项目,其中一个业务是客户输入的信息字段不固定(字段合集大概100多个,客户可能只会挑选其中5-15个填写),这里我使用的是动态XML存储客户数据,自然就想到了mssql里面的xml数据类型,研究了半天时间(其中xml主索引,xml辅助索引-path索引、value索引都加了),发现这个字段内容值模糊查找性能很差:1.测试了姓名节点模糊查找;2.测试了时间段的查找,运行结果如下(数据量测试环境下是200W条,实际项目上线运行数据量会以每月15W左右的量逐步增加):
  1. SELECT * FROM dbo.user_info_xml WHERE info_xml.value('(/customers/user_name)[1]','nvarchar(50)') LIKE '%孙%' --19秒
  2. SELECT * FROM dbo.user_info_xml WHERE info_xml.exist('/customers/user_name/text()[contains(.,"孙")]') = 1  --14秒
  3. SELECT * FROM dbo.user_info_xml WHERE info_xml.value('(/customers/play_date)[1]','datetime') > '2015-3-21'
  4. AND info_xml.value('(/customers/play_date)[1]','datetime') < '2015-3-24' --29秒
复制代码


不知有无其他办法,可以从mssql本身的xml数据类型来讨论,也可以以这个业务来讨论抛弃mssql存储方式。


作者: qqq911    时间: 2019-12-18 11:03
多表存储吧
作者: jingzizx    时间: 2019-12-18 12:22
顶一下,最后查一下各类策略
作者: litingting0214    时间: 2019-12-18 13:07
建议建多个表存储
作者: bellas    时间: 2019-12-18 14:21
议建多个加索引




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2