検索

ホームページ  >  に質問  >  本文

php - 100,000 個のデータをインポートします。データベースには 100 万個のデータがあります。重複を判断するにはどうすればよいですか?

特定のニーズ

<オル>
  • データベースには 100 万個のデータがあります。

  • 100,000 個のデータをインポートする必要があります。

  • インポートするデータがデータテーブルに存在する場合は、データのインポートを終了します。

  • 質問

    比較する必要があるときに各データをすばやくインポートし、インポートが失敗した場合にデータをロールバックするにはどうすればよいですか?

    PHP中文网PHP中文网2788日前783

    全員に返信(4)返信します

  • phpcn_u1582

    phpcn_u15822017-05-16 13:11:47

    ターゲットテーブルをターゲット(100万データ)、インポートするテーブルをソース(10万データ)と呼ぶとします。
    この例で消費される時間の大部分は、2 つのテーブルのレコードが同じであるかどうかを判断することであり、おそらく作成者は、それらが同一であるとみなされる前に すべてのフィールド (ID フィールドを除く) が同じであることを望んでいるのだと思います。同じ記録。

    各レコードのハッシュに似た値を計算し、ターゲットとソースの新しく作成されたフィールドに格納できます (hashValue)。計算量は 110 万です。

    次に、次のステートメントを使用してデータをインポートします
    リーリー

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:11:47

    取引効率を考えると高くないといけません

    個人的なアイデアについては以下を参照してください:

    1.まず挿入するデータが存在するかどうかを確認します

    ID in('k1,k2,k3');

    のテーブルからIDを選択

    2. データベースに SQL を書き込みます

    10w データ、1 SQL、挿入速度、2 秒以内に解決

    以前書いた、一度に20wのデータ挿入を3秒で完了するように最適化した記事を読むことができます
    https://my.oschina.net/popular...

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:11:47

    私の個人的な考えは、インポート時に重みを判断し、一意性を確保するために一意のインデックスを確立することが重要です。バッチインポートについては、@石记の方法を参照してください。

    返事
    0
  • 怪我咯

    怪我咯2017-05-16 13:11:47

    この問題をもとに、その後のインポート時に大きな問題が発生し、データインポートが遅かったので、これについて記事を書きました:

    /a/11...

    後で見て誰かの参考になれば幸いです。

    返事
    0
  • キャンセル返事