请问大家一个问题,像ms sql 2005 和Oracle都支持对xml文件的存储 那么怎么查询数据库中这些xml中某个字段呢  查询的效率如何 ?不知道大家有没有做过类似的工作 谢谢指点!

解决方案 »

  1.   

    例如有CategoryId,CategoryInfo字段 其中CategoryInfo字段的值是一个xml,内容如下:
    <CategoryInfo>  <CategoryName>Beverages</CategoryName>  <Description>    Soft drinks, coffees, teas, beers, and ales</Description></CategoryInfo>
    执行下面的查询语句
    SELECT CategoryInfo.query('CategoryInfo/Description')FROM xml_CategoriesWHERE CategoryID = 1
    结果如下所示:<Description>Soft drinks, coffees, teas, beers, and ales</Description>这没有问题 但如果数据量达到100万以上 效率如何?大家是否做过类似的工作?
    还有,上面是通过CategoryID来查xml内容的,那么是否可以通过以xml字段里面的一个属性为条件,例如CategoryName来查满足条件的所有列呢?还没有看见类似的实例 希望大家指点!!谢谢
      

  2.   

    据说XML的效率都比较低  不如临时表和CTE
      

  3.   

    用XQUERY查询,100万的话,性能不会太好。。
      

  4.   

    如果真的这么大数据量的话,最好还是专门写一个外部解析程序
    现在的DOM库已经很方便了,解析xml
      

  5.   

    我测试了一下 sql2005 数据库  记录数为一百万,查询一般需要等待10秒左右 只是单表查询 
    硬件条件:cpu双核  内存2G 
    大家觉得如果在项目中利用xml查询 是否可以接受 这个效率
      

  6.   

    经测试,将之前10万条记录的物理表转换为XML,再对应解析XML字段时与之前物理表解析相差3-10秒。
    XML 效率确实不好,大数据表还是传统物理表比较好