更新列的最有效方法

时间:2014-11-21 10:31:54

标签: sql

我对SQL很陌生,所以如果我提出简单的问题,我会道歉。

所以,我有一个表CompProd,其中包含公司及其产品,如下所示:

Company Name   |  Product Name
--------------------------------
 Company Alpha |    Prod_A1
 Company Alpha |    Prod_A2
 Company Alpha |    Prod_A3
 Company Alpha |    Prod_B1
 Company Beta  |    Prod_A4
 Company Beta  |    Prod_B2
 Company Beta  |    Prod_B3

还有一个表ProdCat,其中包含产品类别,如下所示:

Product Name   |  Product Category
------------------------------------
   Prod_A1     |           A
   Prod_A2     |           A
   Prod_A3     |           A
   Prod_A4     |           A
   Prod_B1     |           B
   Prod_B2     |           B
   Prod_B3     |           B

我想要做的是,首先在表格Product Category中添加一列CompProd,然后填写表格ProdCat中的列。

以下是我的代码:

ALTER dbo.CompProd
ADD Product_Category VCHAR(20)

UPDATE dbo.CompProd
Set dbo.CompProd.Product_Category = (
                                SELECT cat.Product_Category
                                FROM   dbo.CompProd comp LEFT JOIN dbo.ProdCat cat
                                ON comp.Product_Name = cat.Product_name
                              )

由于每个表都有数百万行,因此运行上面的代码块需要花费大量的时间。

有更有效的方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

            CompProd   
  Company Name   |  Product_Id
    --------------------------------
     Company Alpha |    1
     Company Beta  |    2

             products
Product Name   |  Product Category | id
-----------------------------------------
   Prod_A1     |           A       | 1
   Prod_A2     |           A       | 2
   Prod_A3     |           A       | 3
   Prod_A4     |           A       | 4
   Prod_B1     |           B       | 5
   Prod_B2     |           B       | 6

如果将表格结构编辑到此。这不是更好吗? 你不需要更新10000条记录!。