php - 导入10万条数据,数据库里有100万条数据,如何判断重复?
PHP中文网
PHP中文网 2017-05-16 13:09:47
0
4
764

具体需求

  1. 数据库里存在100万条数据;

  2. 要导入10万条数据;

  3. 如果要导入的数据在数据表里存在,则终止数据导入;

疑问

如何在每条数据需要对比的情况下快速导入,同时导入失败进行数据回滚?

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(4)
phpcn_u1582

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

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

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

いいねを押す +0
我想大声告诉你

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

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

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

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

のテーブルからIDを選択

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

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

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

いいねを押す +0
滿天的星座

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

いいねを押す +0
刘奇

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

/a/11...

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!