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の実行を除き、変更できません。)
_FROM table
_を見逃した
正しいSQLは次のとおりです。
SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
select * from table use index (idx);
時々、use index(index_name)を使用すると、ヒントforce index、オプティマイザーはインデックスの使用を強制され、指定されたインデックスを持つ行を取得する方法が残っていない場合にのみテーブルスキャンに進みます。
SELECT art.firma FROM art FORCE INDEX (i_iln);
ヒントの詳細についてはUSE INDEXおよびFORCE INDEXこれを確認してください- リンク
Coloumn1、Coloumn2、Coloumnを選択します... [〜#〜] from [〜#〜]TABLE_NAMESE INDEX(index_name)[〜#〜] where [〜#〜] Coloumn = "条件" ;
正しいインデックスがある場合、index()を使用する必要はありません。クエリは、正しいインデックスを選択します。インデックスを使用した後にクエリが遅くなる場合は、インデックスを再確認してください。事前に感謝します。ここにコードを入力してください