大きな MySQL テーブルの最後の N 行の数値を検索する
このシナリオでは、数百万行からなる長いテーブルがあり、各行にインデックス ( autoincrement) と整数フィールド。指定した数値がテーブルの最後の n 行に含まれるかどうかをすばやく確認したいとします。
効率的な解決策
最も効果的なアプローチには、次のように派生テーブルを利用することが必要です。
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;
ログイン後にコピー
説明:
- このクエリbig_table から id 列と val 列を選択して、派生テーブルを作成します。
- id 列に基づいて降順で派生テーブルを並べ替え、最新の行が最初に表示されるようにします。
- LIMIT $n 句は、結果セットを最新の n 行に制限します。
- 最後に、WHERE 条件が派生テーブルの val 列と一致します。指定された some_number に対して、最後の n 行にその番号を含む行を識別します。
利点:
-
インデックス検索: 自動インクリメント ID 列による並べ替えではテーブル インデックスを利用し、 search.
-
パフォーマンス: 結果セットを最後の n 行に制限すると、テーブル全体をスキャンする必要がなくなり、パフォーマンスが大幅に向上します。
-
柔軟性: このクエリでは、$n パラメーターを変更して、最後の行のさまざまな範囲内を検索できます。
以上が大規模な MySQL テーブルの最後の N 行にある数値を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。