php - Importez 100 000 éléments de données. Il y a 1 million d'éléments de données dans la base de données. Comment déterminer la duplication ?
PHP中文网
PHP中文网 2017-05-16 13:09:47
0
4
802

Besoins spécifiques

  1. Il y a 1 million de données dans la base de données ;

  2. 100 000 éléments de données doivent être importés ;

  3. 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 ?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
phpcn_u1582

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal