ホームページ > データベース > mysql チュートリアル > mysqlで全画面スキャンを回避するにはどうすればよいですか?

mysqlで全画面スキャンを回避するにはどうすればよいですか?

青灯夜游
リリース: 2020-09-30 11:07:57
オリジナル
2013 人が閲覧しました

MYSQL がテーブル全体のスキャンを回避する方法: 1. where および order by に関係する列にインデックスを作成します; 2. where 句のフィールドでの null 値判定を回避し、「!=」または「」の使用を回避します。演算記号、条件を接続するために or を使用しないでください。3. を使用する場合と使用しない場合は注意してください。4. インデックス列での計算の使用は避けてください。

mysqlで全画面スキャンを回避するにはどうすればよいですか?

MYSQL はテーブル全体のスキャンを回避します

1. クエリを最適化するには、テーブル全体のスキャンを回避するようにしてください。 where に関係する列にインデックスを構築し、

2 で順序付けすることを検討する必要があります。where 句のフィールドでの null 値の判定を避けるようにしてください。そうしないと、エンジンがインデックスの使用を断念し、完全な処理を実行します。 table scan

例: select id from t where num is null。num にデフォルト値 0 を設定し、テーブルの num 列に null 値がないことを確認してから、次のようにクエリを実行します。 : select id from t where num=0

3. where 句での使用は避けてください。 = または演算子。それ以外の場合、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。

4. 条件を接続するために where 句で または を使用することは避けてください。そうしないと、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します (ユニオンを使用できます)

5。 in と Not in も注意して使用する必要があり、そうしないとテーブル全体のスキャンが発生します (in の間で使用できる場合は使用しないでください)

6. 次のクエリでもテーブル全体のスキャンが発生します。

select id from t where name like '%李%', select id from t where name like '%李'

効率を高めるために、この形式を使用できます select id from t where 「李%」のような名前を付けた場合は、全文検索も検討できます。

7. インデックス列での計算の使用を避けてください。言い換えれば、where 句のフィールドに対する式操作や関数操作を避けるようにしてください。これにより、エンジンはインデックスの使用を断念し、フルテーブルスキャンです。

例: select id from t where num/2=100 を次のように変更する必要があります: select id from t where num=100*2

8。多くの場合、次のようにすることをお勧めします。 Select:exists は、サブクエリが少なくとも 1 行のデータを返すかどうかを確認するために使用されます。サブクエリは実際にはデータを返しませんが、true または false の値を返します。

select num from a where num in(select num from b)

次のステートメントに置き換えます: select num from a where names (select 1 from b where num=a.num)

9. select from t をどこにも使用せず、「」を特定のフィールド リストに置き換え、未使用のフィールドを返さないでください。

10.>

の代わりに >= を使用します。効率的: SELECT * FROM EMP WHERE DEPTNO >=4

非効率的: SELECT * FROM EMP WHERE DEPTNO > 3

この 2 つの違いは、前者の DBMS は DEPT が 4 の最初のレコードに直接ジャンプするのに対し、後者は最初に DEPTNO=3 のレコードを見つけて、DEPT の最初のレコードまで前方スキャンすることです。 3件以上の記録。

11.having 句を Where 句に置き換えます

推奨チュートリアル: mysql ビデオ チュートリアル

以上がmysqlで全画面スキャンを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート