mysql_MySQL にランダムな文字列データを挿入する方法
Oct 09, 2016 am 08:33 AMアプリケーションシナリオ:
場合によっては、テストのためにデータベースに挿入されたレコードをテストする必要があるため、これらのスクリプトを使用することが非常に重要です。
テーブルの作成:
リーリー
ランダムな文字列を生成する関数を作成します:
リーリー
x から始まるテーブルを挿入するプロシージャを作成します。 y は終了値、z は生成される乱数の数です
リーリー
mysqlのランダムデータの生成と挿入
dblp データベースには引用情報がほとんどなく、論文あたりの引用数は平均 0.2 です。実験データセットとして dblp を使用した論文では、引用情報をランダムに追加できると述べられています。これに触発されて、各論文に 20 件のランダムな引用を追加する予定だったので、次の SQL ステートメントを書きました。
String sql = "引用(pId1,pId2) 値に挿入((論文制限から pId を選択 ?,1),(論文制限から pId を選択 ?,1))";プリペアドステートメントを使用してデータベースをバッチモードで送信します。
最初のパラメータは、0 から N までのペーパーの ROWID 情報です (N はペーパーの合計行です)。 2 番目のパラメーターは、Java によって生成された 0 ~ N の範囲の 20 個の非反復乱数です。次に、for ループにネストされ、10,000 個のデータごとにデータベースに送信されます。
このコードは制限機能を巧みに使用してタプルをランダムに選択しており、密かに満足しています。すべての選択はデータベースによって行われるため、jdbc を介した複数の接続の必要がなく、すぐに完了できるはずだと思いました。予想外なことに、わずか 100,000 個のデータ (10000*10) を挿入するのに 22 分もかかりました。最後の実験では 400 万個のデータを挿入する必要があるため、約 14 時間かかります。
そこで、時間のボトルネックを見つけるために同様のプログラムを書き続け、最終的にこの操作は非常に時間がかかります。最初に制限を選択する理由は、数値がランダムに生成され、その数値をタプル、つまり ROWID にマップする必要があるためです。papers テーブルの主キーは増加する int ではないため、デフォルトの ROWID は存在しません。 。その後、auto_increment の一時列をpapers テーブルに追加し、引用の挿入が完了したら削除できるのではないかと考えました。このようにして、SQL ステートメントは次のように変更されます:
String sql = "引用(pId1,pId2)に挿入値((temp=?の論文からpIdを選択), (temp=?の論文からpIdを選択))";
100,000 個のデータを再度挿入します。これには 38 秒かかります。効率は大幅に改善されましたが、さらに最適化できるかどうかはわかりません。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7297
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
