gpt4 book ai didi

mysql - 哪些索引可以加快 MySQL 语句的速度

转载 作者:行者123 更新时间:2023-11-29 18:29:51 24 4
gpt4 key购买 nike

我需要更改数据库中的表,以便可以针对特定项目(供应商)存储更多信息。我有一张表如下:

产品(约285000行)

  • 产品 ID
  • 供应商名称
  • 条形码
  • ...

并且想要再创建两个表:

供应商:

  • supplier_id (UUID)
  • 名称(来自产品表)
  • 联系方式
  • ...

供应商产品:

  • product_id(产品 FK)
  • supplier_id(供应商 FK)
  • 送货选项
  • ...

supplier 表需要填充与 product 表中的 supplier_name 不同的条目。然后,supplier_product 表需要 supplier 表中的 UUID

到目前为止我的 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 秒后超时。有没有更好的方法来填充这两个表?

创建更多这样的表是我经常遇到的一种模式,因此如果有更优化的方法,我将不胜感激。

最佳答案

我在 supplier 表中的 name 列上添加了索引,并且不再看到超时。我可以在 INSERT 运行后删除该索引。

关于mysql - 哪些索引可以加快 MySQL 语句的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com