web-dev-qa-db-ja.com

MySQLの選択クエリで使用するインデックスをどのように示唆しますか?

MySQLクエリ(MySQL 5.0.88を実行)がありますが、これを高速化しようとしています。基礎となるテーブルには複数のインデックスがあり、問題のクエリには間違ったインデックスが使用されています(i_active-16.000行、対i_iln-7行)。

私はMySQLをあまり経験していませんが、use indexヒント。mySQLに特定のインデックスを強制的に使用させることができます。私はこのようにしようとしています:

 SELECT art.firma USE INDEX (i_iln)
 ...

しかし、これはMySQLエラーを生成します。

質問
誰が私が間違っているのか教えてもらえますか? (5.0.88の実行を除き、変更できません。)

32
frequent

_FROM table_を見逃した

正しいSQLは次のとおりです。

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....

54
Raptor
select * from table use index (idx);

http://dev.mysql.com/doc/refman/5.0/en/index-hints.html

5

時々、use index(index_name)を使用すると、ヒントforce index、オプティマイザーはインデックスの使用を強制され、指定されたインデックスを持つ行を取得する方法が残っていない場合にのみテーブルスキャンに進みます。

SELECT art.firma FROM art FORCE INDEX (i_iln);

ヒントの詳細についてはUSE INDEXおよびFORCE INDEXこれを確認してください- リンク

1
MikA

Coloumn1、Coloumn2、Coloumnを選択します... [〜#〜] from [〜#〜]TABLE_NAMESE INDEXindex_name[〜#〜] where [〜#〜] Coloumn = "条件" ;

正しいインデックスがある場合、index()を使用する必要はありません。クエリは、正しいインデックスを選択します。インデックスを使用した後にクエリが遅くなる場合は、インデックスを再確認してください。事前に感謝します。ここにコードを入力してください

0