1

アプリケーションでいくつかのクエリのパフォーマンスを最適化しようとしています。

複数の結合と全文検索を含む 1 つのクエリでSQL_CALC_FOUND_ROWS、ページネーションの最初のクエリで使用します。

残念ながら、クエリのパフォーマンスは非常に遅く、SQL_CALC_FOUND_ROWSクエリを使用しない場合は約 100 倍速くなります。

この場合、パフォーマンスが向上する可能性はありますか?

なしで単一の count-query を試しましたSQL_CALC_FOUND_ROWSが、このクエリはSQL_CALC_FOUND_ROWS-query よりもさらに 1 秒遅くなります。

4

1 に答える 1

0

Without knowing anything about your table structure and query we can't possibly tell if the query can be faster.

With SQL_CALC_FOUND_ROWS it first needs to process all records but if you use LIMIT 10 it can stop processing records after the first 10 found records. So there is the performance difference. There is no way of getting the same result faster without using a count or SQL_CALC_FOUND_ROWS.

However most of the time, a query can be optimized in different ways.

If you're looking into fulltext search, consider using sphinx. In my experience it always will outperform MySQL: http://www.sphinxsearch.com/

于 2012-10-11T12:33:27.140 に答える