MyISAM DBで約50,000のクエリを実行していますが、クエリの実行時間が長くなると遅くなります。たとえば、最初は1秒間に20行を実行し、最後には1秒間に5行を実行します。これは、MyISAMが挿入のたびにテーブルをロックするために発生するのでしょうか、それとも他の理由で発生するのでしょうか。
MyISAMのみがサポートしているフルテキストインデックスでmatch()against()を使用しているため、MyISAMを使用する必要があると思います。この機能でInnoDBまたは他のDBタイプを使用することは可能ですか、または現在のクエリの実行時間は約45分であるため、クエリを高速化する方法はありますか?
クエリ構造について多くの回答が予想されます。列が異なる3つのテーブルを1つのテーブルにまとめ、3つの異なる行を一致させて「スーパーテーブル」を形成しようとしています。その結果、多くの一致を実行する必要があります( )against()、preg_match、selects、およびloopingを使用して、これらを正確に一致させます。ループを最適化するために、プリペアドステートメントでPDOを使用していますが、これにより、mysql_connectと標準関数を使用して、クエリ時間が上記の時間に短縮され、1時間近くになりました。
クエリは最初は遅くないことを覚えておいてください。約10,000のクエリが実行された後、それは著しく遅くなり、サーバー会社が受け入れるのに不合理なレベルに達するまで、それはますます遅くなります。解決策?