有两张表
订单表(30万条数据)
id         cityCode               address                          buildingName
1        1001              番禺幸福花园2栋301                   
2        1003              佛山幸福公馆1栋502楼盘表(14个城市近2万条数据)
cityCode         buildingName
1001                   幸福花园
1003                   幸福公馆相同城市下,如果订单表中的address 中包含楼盘表中buildingName 那么更新订单表中的 buildingName,
目前使用 自带的 charindex函数效率很慢,连接后数据量很恐怖请问有什么好的方法来解决

解决方案 »

  1.   


    使用cityCode关联更新即可,不需要使用charindex:
    update a set a.buildingName=b.buildingName
    from 订单表 as a
    join 楼盘表 as b
         on a.cityCode=b.cityCode
      

  2.   

    如果订单表中的address 中包含楼盘表中buildingName 才更新,不是简单的多表更新
      

  3.   

    你的关联条件有两个,数据还会这么多吗?
    update a set a.buildingName=b.buildingName
    from 订单表 as a
    join 楼盘表 as b
         on a.cityCode=b.cityCode AN
      

  4.   

    update a set a.buildingName=b.buildingName
    from 订单表 as a
    join 楼盘表 as b
         on a.cityCode=b.cityCode AND a.address LIKE '%'+b.buildingName+'%'试试LIKE的速度
      

  5.   

    可以不用全表连接的。
    UPDATE 订单表
       SET buildingName = (SELECT MAX(buildingName)
                             FROM 楼盘表
                            WHERE cityCode = 订单表.cityCode
                              AND CHARINDEX(buildingName,订单表.address) <> 0)
     WHERE id BETWEEN 1 AND 100
      

  6.   

    234 update a set a.buildingName=b.buildingName from 订单表 as a join 楼盘表 as b      on a.cityCode=b.cityCode AN