2

私はMySQLの初心者ユーザーなので、ここで少しアドバイスをすることができます。現在、それぞれ約100,000レコードで構成されるテキストファイルを処理するプログラムを継承しています。各行はそれ自身のレコードであり、処理されます。このようなファイルは、ほとんど何も行われておらず、ほとんどが文字列の比較であるため、約1分で完了できます。

とにかく、今では、速度をあまり落とさずに、いくつかのSQLクエリをプロセスに追加する必要があります。基本的に、これらの100,000行のそれぞれが、DBにクエリを実行し、より多くのデータにアクセスできるかどうかを確認するためにSQLselectステートメントを作成する必要がある可能性があります。大まかなスタートを切りましたが、処理時間は1分から約1時間です。絶対に受け入れられない。私の質問は、これをスピードアップする方法さえありますか?(あると確信しています)

接続オブジェクトを1つだけ開いていますが、レコードごとに個別のSQLクエリを作成する方法がわかりません。ステートメントをバッチ選択する方法はありますか?どんなアドバイスもとても参考になります、ありがとう。

アップデート

申し訳ありませんが、もっと明確にすべきでした。これはSQLselectステートメント用です。バッチ挿入の方法を知っていますが、問題ありません。バッチ選択ステートメントが可能かどうか、またはそれらを高速化する方法がわかりません。

また、誰かがインデックスについて言及しましたが、私はインデックスについて何も知りません。誰かが私にそれらに関するいくつかの情報を提供できますか?

4

3 に答える 3

4

句によく現れる列のインデックスSELECTを作成することにより、高速化します。WHERE

すべてをトランザクションにラップすることで、バッチ挿入を高速化します。

于 2012-06-21T13:36:32.980 に答える
0

これは、PREINSERTTRIGGERコードの良い使用法かもしれません。-言い換えると、着信行が提示されたときにデータベースに作業を任せます。

于 2012-06-21T13:39:06.047 に答える
0

select ステートメントを実行している場合は、inキーワードを使用できます。

http://www.w3schools.com/sql/sql_in.asp

SQL IN 構文

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
于 2012-06-21T13:39:51.413 に答える