ホームページ  >  記事  >  データベース  >  SQL最適化のいくつかの方法

SQL最適化のいくつかの方法

silencement
silencementオリジナル
2019-06-05 16:04:1927228ブラウズ

SQL最適化のいくつかの方法

1. クエリを最適化するには、テーブル全体のスキャンを避けるようにしてください。まず、where と order by に関係する列にインデックスを作成することを検討してください。

2. where 句内のフィールドで null 値の判断を行わないようにしてください。そうしないと、エンジンはインデックスの使用を断念し、次のようなテーブル全体のスキャンを実行します。 set on num デフォルト値は 0 です。テーブルの num 列に null 値がないことを確認してから、次のようにクエリを実行します:

select id from t where num is null

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


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

select id from t where num=0

5.in と not in も注意して使用する必要があります。そうしないと、次のようなテーブル全体のスキャンが発生します。連続値を間で使用できる場合は、


select id from t where num=10 or num=20

6 では使用しないでください。次のクエリでもテーブル全体のスキャンが発生します:

select id from t where num=10
union all
select id from t where num=20

7。 where 句内のフィールドに対する式操作を回避するためです。これにより、エンジンがインデックスの使用を断念し、テーブル全体のスキャンが実行されます。例:

select id from t where num in(1,2,3)


select id from t where num between 1 and 3

8 に変更する必要があります。where 句内のフィールドに対して関数演算を実行しないようにしてください。インデックスを使用してテーブル全体のスキャンを実行します。例:

select id from t where name like &#39;%abc%&#39;


select id from t where num/2=100

9 に変更する必要があります。「=」の左側で関数、算術演算、その他の式演算を実行しないでください。そうしないと、システムがインデックスを正しく使用できない可能性があります。

10. インデックス フィールドを条件として使用する場合、インデックスが複合インデックスの場合、システムが確実にインデックスを使用するようにインデックスの最初のフィールドを条件として使用する必要があります。

そうしないとインデックスは使用されないため、フィールドの順序はインデックスの順序とできる限り一致する必要があります。


11. 意味のないクエリは書かないでください。たとえば、空のテーブル構造を生成する必要がある場合:

select id from t where num=100*2

このタイプのコードは結果セットを返しませんが、結果セットを消費します。システム リソースを変更する必要があります。次のように:

select id from t where substring(name,1,3)=&#39;abc&#39;--name以abc开头的id

以上がSQL最適化のいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。