ホームページ >バックエンド開発 >PHPチュートリアル >[] 数千万のテーブルを複製する方法

[] 数千万のテーブルを複製する方法

WBOY
WBOYオリジナル
2016-06-13 13:40:061140ブラウズ

[ヘルプ] 数千万のテーブルを複製するにはどうすればよいですか?
私は数万レベルの小さなデータベースを扱っていますが、インデックスやデータ型などの違いが効率にどれだけ影響するかわかりません。最近パスワードが漏洩しませんでしたか? 1 つをダウンロードして mysql データベースにインポートしました。合計 2,000 万件以上のレコードがあり、他のフィールドはすべて削除され、インデックスが作成されました。 select は明らかに異なりましたが、重複排除時に問題が発生しました。

方法 1:
CREATE TABLE newtable SELECT DISTINCT pwd FROM oldtable
この方法は最も効率的であるように見えますが、実行時にマシンを直接ドラッグして消滅させます。そしてメモリはしばらくすると使用されます。

方法 2:
レコードを 1 つずつ取得し、重複を削除します (毎回 $num レコードを抽出します。私の $num=50)
$result = mysql_query("SELECT MIN (id), pwd FROM tablename WHERE id BETWEEN $id AND $num GROUP BY pwd");
while($row = mysql_fetch_row($result)){
mysql_query("DELETE FROM tablename WHERE id>$ row [0] AND pwd='$row[1]'");
}
$id += $num;
その後、アドレスバーや Cookie などを通じて $id を渡すと、効率が向上します。が低すぎるため、解決しました 300,000 個を超える重複を削除するのに 100 分かかりました

より効率的にするにはどうすればよいですか?ありがとうございます

-----解決策---------
一時的なファイルを作成しますtable この方法は良いです
以前、私は他の人にこれを行うことを一般的に勧めましたが、データ量が少ないことは問題ではないかもしれません
http://topic.csdn.net/u/ 20111225/22/7cabedc3-5e9e-42b3-b05b -153ba5a5a67f.html


運用中のリソースの占有は必要かつ避けられません。 。 。 。 。ゆっくり待ってくれるなら別ですが
------解決策----------------------
2100w、どれだけ効率的かわかりません固有のものを追加するには、

SQL コード
 を試してください。
変更無視テーブル mypwd add unique(pwd);
テーブル mypwd を変更し、インデックス pwd を削除します。
<br><font color="#e78608">------解決策------------------</font><br>一時テーブルを使用します。一時テーブルを作成します....
<br><font color="#e78608">------解決策------------------</font><br>試してみましょう: <br><br>新しいテーブル、固有のフィールドを設定します。 <br>SQL ファイルをエクスポートします。 <br>リソースのインポート。
<br><font color="#e78608">------解決策----------------------</font><br>一意のキーを作成できます。インデックスしないでください。 繰り返されるエラーは直接報告され、無視されます。 <br><br>選択 メモリが不足しています。まだ保存する必要があります。 そして、それは比較して繰り返す必要もあります。 ソースほど高速であってはなりません。
<br><font color="#e78608">------解決策---------</font><br>
話し合う

引用:

一意のキーを作成できます。インデックスしないでください。 繰り返されるエラーは直接報告され、無視されます。

選択 メモリが不足しています。まだ保存する必要があります。 そして、それは比較して繰り返す必要もあります。 ソースほど高速であってはなりません。

7 階の私の返信を参照してください。pwd フィールドがインデックスされていない場合、7 階の効率は非常に高く、110 秒で処理されます。 SQLyog
で実装されています
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。