我需要更改数据库中的表格,以便针对特定项目supplier
存储更多信息。我有一张表如下:
产品(~285000行)
想再创建两个表:
供应商:
UUID
)供应商产品:
supplier
表需要填充supplier_name
表中product
的不同条目。然后supplier_product
表需要UUID
表中的supplier
。
到目前为止我的SQL是:
INSERT INTO supplier (name, id)
SELECT DISTINCT(TRIM(supplier)), UUID() FROM product
WHERE supplier_name IS NOT NULL AND TRIM(supplier_name) != ""
AND TRIM(supplier_name) NOT IN (
SELECT name FROM supplier
);
创建~4000行。然后:
INSERT INTO supplier_product (id, supplier_id, product_id, barcode, ...)
SELECT UUID(), s.id, p.product_id, p.barcode, ...
FROM product p
INNER JOIN supplier s ON TRIM(p.supplier_name) = s.name
WHERE s.name IS NOT NULL;
查询目前在30秒后超时。是否有更好的方法来填充这两个表?
创建更多这样的表是我经常遇到的模式,所以如果有更优化的方法,我会很感激。
答案 0 :(得分:0)
我在name
表格的supplier
列中添加了一个索引,不再看到超时。我可以在INSERT
运行后删除此索引。