勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

MySQLでSELECT時にインデックスを指定する方法

   2026/10/02  MySQL / MariaDB データベース

MySQLでインデックスを作成しているのにSELECT時に使用されていないというケースがあった。オプティマイザにインデックスを指定することで解決できた。以下に対応方法をメモ。

 

対応方法

ソースコード

SELECT * 
FROM `test_table` 
FORCE INDEX (インデックス名) 
WHERE ~~;

SELECT * 
FROM `test_table` 
USE INDEX (インデックス名) 
WHERE ~~;

USEとFORCEの違い

どちらもインデックスを指定するがFORCEの方が強制力が強い。

 

リファレンス

インデックスヒント

https://dev.mysql.com/doc/refman/8.0/ja/index-hints.html

 

参考サイト

https://analytics-note.xyz/sql/index-hints/

 - MySQL / MariaDB データベース

  関連記事

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...

MySQLでtext型カラムに入っている数値をint型としてソートする
MySQLでtext型カラムに入っている数値をint型としてソートする

MySQLでtext型として指定されているカラムがあり、その中には文字列であった ...

MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法

MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...

MySQLで「Incorrect integer value: '' for column」エラーの対応方法
MySQLで「Incorrect integer value: '' for column」エラーの対応方法

MySQLで「Incorrect integer value: '' for c ...

MySQLでサイズの大きいファイルをインポートする際の注意点
MySQLでサイズの大きいファイルをインポートする際の注意点

MySQLでサイズの大きい(3GBほどの)dumpファイルを異なるサーバに移行し ...