勉強したことのメモ

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でカラム数の異なるテーブルを結合する(UNION)
MySQLでカラム数の異なるテーブルを結合する(UNION)

MySQLでカラム数の異なるテーブル同士をUNIONで結合させたかった。ただ、何 ...

MySQLでストアドプロシージャ戻り値対応版であるストアドファンクションの設定と利用方法
MySQLでストアドプロシージャ戻り値対応版であるストアドファンクションの設定と利用方法

先日MySQLのストアドプロシージャに関するメモを書いたが、今回はストアドファン ...

MySQLでグループ化したものを条件で絞る(HAVING)
MySQLでグループ化したものを条件で絞る(HAVING)

正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...

PHPでmysqli関数使用時のプリペアドステートメントの利用方法
PHPでmysqli関数使用時のプリペアドステートメントの利用方法

PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...

MySQLにて指定したカラムがNULLもしくは空の場合、あらかじめ決めておいた内容で表示する方法
MySQLにて指定したカラムがNULLもしくは空の場合、あらかじめ決めておいた内容で表示する方法

何らかのフォームとMySQLを組み合わせた際に任意入力の項目はそのカラムがNUL ...