1

パフォーマンスや最適化に関して、これ以外のベスト/ベター プラクティスがあるかどうか疑問に思っていました。

編集: PHP7 を使用しています。それを明確にするべきでした、私は謝罪します。私は地元の非営利団体のボランティアプロジェクトを行っていますが、次のように設定されています。

表:ボランティア

pk: v_id

だから私がやっていることは次のとおりです。 SELECT * from Volunteer ORDER BY v_id DESC LIMIT 25;

(彼らは、「最後のログ」レポート用に最新の 25 件を現在表示したいと考えています。)

EDIT2: 私が今これを尋ねている唯一の理由は、システムで 10,000 のボランティア ログに達したことです。月曜日から金曜日に、1 日あたり 50 から 100 (またはそれ以上) のログを追加できるので、すぐに合計します。

4

2 に答える 2

0

このように試してみてください。これまでのところ最も簡単なものです

Select * from tablename order by column desc limit 5
于 2016-04-01T01:39:12.240 に答える
-1

ORDERプログラムで実行できる場合は、レコードを逆方向にループしますASCLIMIT X

ご使用の言語 (PHP、ノード (javascript)、Java など) を提供していただければ、逆方向ループについてお手伝いできますが、次のようになります。

for(i=rows.length-1;i>=0;i--){
   //do your stuff here
}

MySQLでそれをしなければならない場合

SELECT結果ASCLIMIT Xサブクエリとして使用し、クエリでラップしますORDER DESC

SELECT
*
FROM
(
    SELECT
    somecol
    FROM
    sometable
    ORDER BY
    the_date ASC
    LIMIT 100
) as a
ORDER BY
the_date DESC

更新: 質問が最初に尋ねられた方法は、最後の X の結果が必要なように聞こえ、DESC を注文しました。他の誰かがそれを探しにここに来た場合に備えて、答えをそのままにしておきます。

ORDER BYとを使用して現在行っていることはLIMIT、それを行うための最適な方法です。最適化するには、SELECT必要な列のみを使用し、v_id に一意のインデックスがあることを確認してください。それ以上の最適化が必要な場合は、古いデータをアーカイブして頻繁にバキュームすることを検討してください。

于 2016-04-01T01:27:55.200 に答える