Supposons que la table cible s'appelle cible (1 million de données) et que la table à importer s'appelle source (100 000 données). Une grande partie du temps consacré à cet exemple consiste à déterminer si les enregistrements des deux tables sont identiques. Je suppose que l'auteur souhaite que tous les champs soient identiques (sauf le champ id) avant d'être considérés comme tels. le même disque.
Calculez une valeur de type hachage pour chaque enregistrement, qui peut être stockée dans les champs cible et source nouvellement créés (hashValue). Le montant du calcul est de 1,1 million. Utilisez ensuite l'instruction suivante pour importer les données
IF EXISTS(
SELECT TOP 1 1
FROM source a
INNER JOIN target b
ON a.hashValue = b.hashValue
) BEGIN
-- 返回重复记录
SELECT a.*
FROM source a
INNER JOIN target b
ON a.hashValue = b.hashValue
END
ELSE
BEGIN
INSERT INTO Target(filed1, field2, field3, field4 ... hashValue)
SELECT
t.filed1,
t.field2,
t.field3,
t.field4, ..., t.hashValue
FROM target t
END
Si vous considérez l'efficacité des transactions, elle ne doit pas être élevée
Veuillez vous référer ci-dessous pour des idées personnelles :
1. Déterminez d’abord si les données à insérer existent
sélectionnez l'identifiant dans la table où id in('k1,k2,k3');
2. N'existe pas. Écrivez SQL dans la base de données
.
10w données, 1 sql, vitesse d'insertion, résolu en 2 secondes
Vous pouvez lire un article que j'ai écrit auparavant, optimisant l'insertion de 20 W de données à la fois pour être complétée en 3 secondes https://my.oschina.net/famous...
Mon idée personnelle est la suivante : le point clé est de juger du poids et d'établir un index unique pour garantir l'unicité lors de l'import par lots, vous pouvez vous référer à la méthode de @石记.
Sur la base de ce problème, il y a eu un gros problème lors de l'importation suivante, et l'importation des données était lente, j'ai donc écrit un article à ce sujet :
/a/11...
J'espère que quelqu'un pourra l'utiliser comme référence après l'avoir vu plus tard.
Supposons que la table cible s'appelle cible (1 million de données) et que la table à importer s'appelle source (100 000 données).
Une grande partie du temps consacré à cet exemple consiste à déterminer si les enregistrements des deux tables sont identiques. Je suppose que l'auteur souhaite que tous les champs soient identiques (sauf le champ id) avant d'être considérés comme tels. le même disque.
Calculez une valeur de type hachage pour chaque enregistrement, qui peut être stockée dans les champs cible et source nouvellement créés (hashValue). Le montant du calcul est de 1,1 million.
Utilisez ensuite l'instruction suivante pour importer les données
Si vous considérez l'efficacité des transactions, elle ne doit pas être élevée
Veuillez vous référer ci-dessous pour des idées personnelles :
1. Déterminez d’abord si les données à insérer existent
sélectionnez l'identifiant dans la table où id in('k1,k2,k3');
2. N'existe pas. Écrivez SQL dans la base de données
.10w données, 1 sql, vitesse d'insertion, résolu en 2 secondes
Vous pouvez lire un article que j'ai écrit auparavant, optimisant l'insertion de 20 W de données à la fois pour être complétée en 3 secondes
https://my.oschina.net/famous...
Mon idée personnelle est la suivante : le point clé est de juger du poids et d'établir un index unique pour garantir l'unicité lors de l'import par lots, vous pouvez vous référer à la méthode de @石记.
Sur la base de ce problème, il y a eu un gros problème lors de l'importation suivante, et l'importation des données était lente, j'ai donc écrit un article à ce sujet :
/a/11...
J'espère que quelqu'un pourra l'utiliser comme référence après l'avoir vu plus tard.