勉強したことのメモ

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でROW_NUMBER関数を使用してグループ毎に連番を設定する方法
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法

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

InnoDBのオートインクリメントで抜け番が発生する原因について
InnoDBのオートインクリメントで抜け番が発生する原因について

MySQLのInnoDBでIDというカラムにオートインクリメント設定していたが、 ...

MySQLで1対多というテーブル構造でデータ結合と条件検索する方法
MySQLで1対多というテーブル構造でデータ結合と条件検索する方法

MySQLで飲食店舗テーブルと休業日テーブルがあり、1店舗に対して複数行の休業日 ...

MySQLで特定の値を加算しつつNULL値の場合は0にする方法
MySQLで特定の値を加算しつつNULL値の場合は0にする方法

いくつかのコードに対して投票を行い、その合計値をスコアとして出したい。ただ、投票 ...

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

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