勉強したことのメモ

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

  関連記事

PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法
PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法

Podmanコンテナ環境で直前まではPHP→MySQL接続できていたのに「pod ...

エックスサーバーでMySQLのサイズに注意
エックスサーバーでMySQLのサイズに注意

エックスサーバーで自動更新のログをMySQLに保存するようなシステムを動かしてい ...

MySQLでカラム数の異なるテーブルを結合する(UNION)
MySQLでカラム数の異なるテーブルを結合する(UNION)

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

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

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

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

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