ホームページ  >  記事  >  データベース  >  mysql インデックスは自動的に使用されますか?

mysql インデックスは自動的に使用されますか?

little bottle
little bottleオリジナル
2019-05-10 16:44:333024ブラウズ

Mysql インデックスは自動的に使用されるほか、ユーザーが強制的に使用することもできます。 MYSQL は、インデックス作成後に 2 つの方法でインデックスを使用します: 1 つは、データベースのクエリ オプティマイザーがインデックスを使用するかどうかを自動的に決定する方法で、もう 1 つは、SQL ステートメントを作成するときにユーザーがインデックスの使用を強制できる方法です。

mysql インデックスは自動的に使用されますか?

MYSQL は、インデックスの作成後、2 つの方法でインデックスを使用します。まず、データベースのクエリ オプティマイザーがインデックスを使用するかどうかを自動的に決定します。次に、クエリデータベースのオプティマイザはインデックスを使用するかどうかを自動的に決定し、ユーザーは SQL ステートメントを作成するときにインデックスの使用を強制できます。

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

MYSQL がインデックスを作成した後にインデックスを使用するには 2 つの方法があります:

1. データベースのクエリ オプティマイザーはインデックスを使用するかどうかを自動的に決定します;

2. ユーザーは SQL ステートメントを作成するときにインデックスの使用を強制できます。 2 つのインデックスが使用される 説明方法

最初の方法は、インデックスを自動的に使用することです。

クエリ ステートメントを受信した後、データベースは where ステートメントの背後にあるクエリ条件をチェックし、テーブル上のインデックスもチェックして、クエリ条件とインデックスに基づいてそれらを照合します。 クエリ条件とインデックスの一致には、クエリ フィールドとインデックス フィールドの一致、およびクエリ タイプとインデックス タイプの一致が含まれます。前者はクエリ条件の属性にインデックスを構築する必要があるという意味で理解しやすいですが、後者はクエリ条件がインデックスを使用できる必要があることを意味します。たとえば、等しい値判定や範囲クエリでは B が使用できます。 -ツリー インデックスは、ハッシュ インデックスは等しい値にのみ適用できます。

クエリ条件に一致するインデックスが見つかった後、そのインデックスを使用するかどうかを決定するためのコスト見積もりが行われます。コスト見積もりは主にアクセスされるレコード数に基づいて行われます。一般的に、数が多ければ、インデックスを介してアクセスされるレコードがテーブル レコード全体に占める割合 この数が 15% を超える場合、現時点ではインデックスを使用するコストが高くなるため、インデックスは使用されず、テーブル全体のスキャンが使用されます。ほとんどの場合、インデックスを使用すると効率が向上します。

オプティマイザの判断の後、最終的にインデックスを使用するかどうかを決定します。

2 番目の方法は、インデックスの使用を強制することで、主に SQL ステートメントによって実現されます。

select * from table force index(PRI) limit 2;(强制使用主键)
select * from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index")
select * from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")
インデックスの使用を禁止することもできます

そうです

以上がmysql インデックスは自動的に使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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