recherche

Maison  >  Questions et réponses  >  le corps du texte

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 ?

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中文网2788 Il y a quelques jours782

répondre à tous(4)je répondrai

  • phpcn_u1582

    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

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你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...

    répondre
    0
  • 滿天的星座

    滿天的星座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 @石记.

    répondre
    0
  • 怪我咯

    怪我咯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.

    répondre
    0
  • Annulerrépondre