特定のニーズ
<オル>データベースには 100 万個のデータがあります。
100,000 個のデータをインポートする必要があります。
インポートするデータがデータテーブルに存在する場合は、データのインポートを終了します。
質問
比較する必要があるときに各データをすばやくインポートし、インポートが失敗した場合にデータをロールバックするにはどうすればよいですか?
phpcn_u15822017-05-16 13:11:47
ターゲットテーブルをターゲット(100万データ)、インポートするテーブルをソース(10万データ)と呼ぶとします。
この例で消費される時間の大部分は、2 つのテーブルのレコードが同じであるかどうかを判断することであり、おそらく作成者は、それらが同一であるとみなされる前に すべてのフィールド (ID フィールドを除く) が同じであることを望んでいるのだと思います。同じ記録。
次に、次のステートメントを使用してデータをインポートします
リーリー
我想大声告诉你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...
滿天的星座2017-05-16 13:11:47
私の個人的な考えは、インポート時に重みを判断し、一意性を確保するために一意のインデックスを確立することが重要です。バッチインポートについては、@石记の方法を参照してください。
怪我咯2017-05-16 13:11:47
この問題をもとに、その後のインポート時に大きな問題が発生し、データインポートが遅かったので、これについて記事を書きました:
/a/11...
後で見て誰かの参考になれば幸いです。