勉強したことのメモ

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 データベース

  関連記事

SortableJSを使ってデータの並べ替え&保存
SortableJSを使ってデータの並べ替え&保存

あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...

MySQLで「server has gone~」というエラーの対応方法
MySQLで「server has gone~」というエラーの対応方法

MySQLで「MySQL server has gone away」というエラー ...

MySQLでtime型データからint型データの減算を行い、減算後のデータで条件検索する方法
MySQLでtime型データからint型データの減算を行い、減算後のデータで条件検索する方法

MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...

MySQLでdatetime型にもインデックスを使用して高速化を図る方法
MySQLでdatetime型にもインデックスを使用して高速化を図る方法

ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...

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

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