大規模な MySQL データベースで動作するスクリプトを開発しました。スクリプトは、IIS、MySQL、ASP Classic で動作します。スクリプトは 10,000 または 100,000 レコードを選択し、レコードを 1 つずつ処理してデータベースを更新します。すべて正常に動作しますが、パフォーマンスが非常に遅くなります。速度が遅い理由は、選択ステートメントや更新ステートメント、またはサーバーの遅さではなく、これらのレコードを 1 つずつ処理し、いくつかの変更を行ってから更新するためです。
例えば
SELECT * from mytable
WHERE isempty(title)
ORDER BY length(title) DESC LIMIT 100000;
次に、これらの 100,000 レコードを 1 つずつ処理するには、たとえば 100,000 分かかります。したがって、IE、Chrome、FireFox など、2 つまたは 3 つのブラウザーで同じスクリプトを実行したいと考えています。
このようにしようと考えていましたが、可能かどうかはわかりません。
IIS では、ブラウザー 1 でスクリプトを実行すると、100,000 レコードが選択され、それらの作業が開始され、いくつかの変更が開始されます。ブラウザ 2 では 100,000 を選択しますが、同じ条件のレコードが少ないデータベースでは、90,000 を選択して作業を開始する可能性があります。ブラウザは少し早く起動したため、いくつかの変更が行われる可能性があります。そのため、両方のスレッドが機能している間、互いがそれらの変更を確認し、それらの変更を処理する必要があります。たとえば、タイトルが現在のレコードで終了した場合、そのレコードを渡して別のレコードを選択します。それは可能ですか?よくわからず、カーソルの位置やカーソルの種類などを使用したことはありません..
データベースに 101,000 レコードがあり、スクリプト 1 が最初に開始され、100,000 行を選択するとします。100 分後にブラウザ 2 が起動します。しかし、ブラウザー 2 が 100,000 行を選択すると、その時点でブラウザー 1 は既に 10,000 行を終了しているため、ブラウザー 2 は 91,000 レコードしか取得しません。しかし、これらの 2 つのブラウザーは同じレコードで動作するため、お互いの変更をどのように確認できるでしょうか?
私の現在の状況に対する解決策はありますか?私は MySQL の専門家ではないため、何をすべきかわかりません。
私の英語で申し訳ありませんが、私の質問を理解していただければ幸いです。
アップデート;
これは、スクリプトの問題、遅いサーバーの問題、またはその他の問題によるものではありません。「DO WHILE RS.EOF」と「LOOP」の間で多くのことを行い、例を挙げただけでレコードごとに1分もかからないため、これは遅いです。しかし、スクリプトを実行している 2 つまたは 3 つのインスタンスを同時に考えていました。