#前提
- CakePHP 3系
- MySQL 5.7
CakePHPのクエリービルダーを使ってSQLに USE INDEX (カラム名) を追加したい。
公式ドキュメントを確認したがクエリビルダーのページに記載はなかった。
#対応方法
from句に記載する
SampleController.php
$articles = $this->Articles->find()
->from('articles Articles USE INDEX (category)') //'テーブル名 モデル名 USE INDEX (INDEX名)'
->where(['category' => 'test'])
->toArray();
以下のようなSQLが発行されます。
use_index.sql
SELECT Articles.id AS `Articles__id`,
FROM articles Articles USE INDEX (category)
WHERE Articles.category = test
#参考
CakePHP2より前のバージョンではまた別の方法を使っていたようです。