一张表有一个备用字段存的是xml类型数据,然后查询时速度极慢,10万条数据根据条件统计记录数要6秒,彻底疯了我……
select count(id) from table1 where ready1.value('(ExtField/Quality)[1]','varchar(100)')  like '%一般%'

解决方案 »

  1.   

    给点你的测试数据和所需要的结果XML的效率确实不高
      

  2.   

    就是假如数据是这样的 然后我要统计一般,中等,高端各个数据量(很多字段省略了)
    table1
    id                    ExtField
    2347                  <ExtField><Quality>一般</Quality><CityCode>3301</CityCode></ExtField>
    2345                  <ExtField><Quality>高端</Quality><CityCode>3303</CityCode></ExtField>
    2321                  <ExtField><Quality>中等</Quality><CityCode>3302</CityCode></ExtField>
      

  3.   

    本来就是XML的数据 没什么好办法 呵呵
      

  4.   

    连MVP都说没办法了,看来真的不行了……
      

  5.   


    --试试exists
    create table tb(name xml)
    insert into tb
    select '<ExtField><Quality>一般</Quality><CityCode>3301</CityCode></ExtField>' union
    select '<ExtField><Quality>一般</Quality><CityCode>3301</CityCode></ExtField>' union
    select '<ExtField><Quality>高端</Quality><CityCode>3303</CityCode></ExtField>' union
    select '<ExtField><Quality>中等</Quality><CityCode>3302</CityCode></ExtField>' 
     
    select count(*) from tb where name.exist('(.[ExtField/Quality="一般"])[1]')=1
      

  6.   

    我是建过索引的,包括什么path索引 value索引都建了,没什么效果