Maison > Questions et réponses > le corps du texte
Besoins spécifiques
Il y a 1 million de données dans la base de données ;
100 000 éléments de données doivent être importés ;
Si les données à importer existent dans la table de données, terminez l'importation des données ;
Questions
Comment importer rapidement chaque élément de données lorsqu'il doit être comparé, et restaurer les données si l'importation échoue ?
phpcn_u15822017-05-16 13:11:47
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
我想大声告诉你2017-05-16 13:11:47
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...
滿天的星座2017-05-16 13:11:47
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 @石记.
怪我咯2017-05-16 13:11:47
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.