SQL 插入查询在迁移中花费太多时间

SQL insert query takes too much time in migration

我正在将数据从一个未规范化的数据库迁移到另一个规范化的数据库。我几乎可以迁移所有数据,但到了查询持续大约 5 分钟的地步,我认为它太多了。

这是实体关系图:

标准化数据库图

以及未规范化数据库的图片:

未规范化的数据库

我想在遇到问题的地方完成的 table 是 "Items",查询是:

INSERT INTO LOS_CAPOS.Items (Item_Factura_Nro, Item_Compra_Cod, Item_Factura_Monto, Item_Factura_Cantidad, Item_Factura_Descripcion)
SELECT f.Factura_Nro, c.Compra_Cod, Item_Factura_Monto, Item_Factura_Cantidad, Item_Factura_Descripcion
FROM LOS_CAPOS.Facturas f
INNER JOIN gd_esquema.Maestra m ON f.Factura_Nro = m.Factura_Nro
INNER JOIN LOS_CAPOS.Compras c ON c.Compra_Fecha = m.Compra_Fecha AND c.Compra_Cantidad = m.Compra_Cantidad

Facturas 是 7664 行,Compras 是 78327 行table

谢谢!

开始测试 SELECT 仅通过注释掉连接(以及来自该 table 的相关列)并查看哪个查找导致缓慢。之后检查您是否可以使用其他索引的列来进行查找。理想情况下,您将加入 LOS_CAPOS.Compras 的 PK。如果不能,请按照我在下面提到的方式开始测试,方法是选择一个列,创建一个非聚集索引,然后测试对该 table 的所有 SELECT/INSERT/UPDATE/DELETE 操作以查看影响。

任何查询tuning/optimisation只能通过查看查询计划来完成。你需要知道索引会减慢 INSERT/UPDATE/DELETE 操作,因为索引也需要更新。所以有不同的索引场景table,哪个列,读还是写的考虑,没有解决缓慢的最终解决方案。