0

各行に割り当てられた優先順位を含む mysql メモリ テーブルがあります。このテーブルを 2 分ごとに作成しており、このテーブルはほぼ 100 回/秒呼び出されています。

約 800 行が含まれます。

私が実行しているクエリは次のようなものです:

select * from table order by priority limit 0,20 

このクエリを最適化したいのですが、テーブルの作成中にデータを並べ替えた順序に並べることはできますか?the order by句を削除すると、プルされたデータは常に優先度に基づいて並べ替えられると想定できます。

ありがとう

4

2 に答える 2

0

このクエリを最適化するために、データベース側で実行できることが 3 つあり、実際の HTML/PHP 側で 1 つ実行できます。

  1. @ http://dev.mysql.com/doc/refman/5.0/en/create-index.htmlで「優先度」インデックス付きの ISAM テーブルを使用し、「優先度」SMALLINT(3) UNSIGNED など、可能な限り小さくします。ゼロフィル。最後のポイントである制限は、すでに取得しています。

  2. オペコード キャッシャーを使用して結果をキャッシュし、データベースを再クエリせずに情報が頻繁に変更される場合は、結果を人々のブラウザーに直接配信します

于 2012-10-24T07:47:33.513 に答える
0

2 つの提案があります。

  1. このテーブルを作成し、作成後に変更しない場合は、作成して入力した後にこれを行いますALTER TABLE table ORDER BY priority。これによりテーブルがソートされ、注文をあきらめることができます。
  2. 結果の順序付けに mysql を使用しないでください。これにはphpを使用します。

インデックスも忘れないでください。mysql の結果キャッシュをオフにしなかった場合、すべての選択がキャッシュされ、結果は計算されません。したがって、構成を確認する必要があります。詳細はこちら

于 2012-10-24T07:39:15.207 に答える