84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
ringa_lee
テスト用に 2,500 万のデータを含むテーブルを見つけました。ID は自動インクリメントされる主キーです。
次のステートメントを使用してテストし、クエリ キャッシュをオフにし、各ステップを 10 回連続して実行し、平均時間を計算します。
制限オフセットが小さい場合、インデックスを介して少数の行のみをスキャンするために order by を追加する方が高速です。オフセットが大きい場合、order by を追加するのは遅くなり、テーブル全体のスキャンは高速になります。 。
インデックスが追加されていない場合、SELECT * FROM sys_client LIMIT 100000,10 は 全表扫描 となり、10 番目のレコード 100001 ~ 100010 が取得されます。インデックスを追加した後のみ、テーブル全体を検索するのではなく、100010 件のレコードを検索するため、実行効率が向上します。
全表扫描
order by のない最初のステートメントでは、mysql の処理手順は次のとおりです。
order by
mysql
フィールドが主キー インデックスであると仮定すると、id の処理手順は次のようになります。 mysql
id
のフィールドが実行中にインデックスを使用する場合。インデックス シーケンスを使用して、並べ替えられたデータを直接取得できます。そうでない場合は、ソート操作が実行されます。
あなたの ID はインデックス化されていますか?
0.0001... より複雑な SQL を検証する必要があります
テスト用に 2,500 万のデータを含むテーブルを見つけました。ID は自動インクリメントされる主キーです。
次のステートメントを使用してテストし、クエリ キャッシュをオフにし、各ステップを 10 回連続して実行し、平均時間を計算します。
制限オフセットが小さい場合、インデックスを介して少数の行のみをスキャンするために order by を追加する方が高速です。オフセットが大きい場合、order by を追加するのは遅くなり、テーブル全体のスキャンは高速になります。 。
インデックスが追加されていない場合、SELECT * FROM sys_client LIMIT 100000,10 は
全表扫描
となり、10 番目のレコード 100001 ~ 100010 が取得されます。インデックスを追加した後のみ、テーブル全体を検索するのではなく、100010 件のレコードを検索するため、実行効率が向上します。
order by
のない最初のステートメントでは、mysql
の処理手順は次のとおりです。フィールドが主キー インデックスであると仮定すると、
id
の処理手順は次のようになります。mysql
データを 10 個取得します。
インデックス シーケンスを使用して、並べ替えられたデータを直接取得します。
これら 10 個のデータを返します -
要約すると:のフィールドが実行中にインデックスを使用する場合。インデックス シーケンスを使用して、並べ替えられたデータを直接取得できます。そうでない場合は、ソート操作が実行されます。
あなたの ID はインデックス化されていますか?
0.0001... より複雑な SQL を検証する必要があります