Красноречивый – это мощный класс для работы с базами данных, легко расширяемый и простой в использовании. Но иногда необходимо получить немного больше, чем разработчики предусмотрели на данный момент.
Некоторое время назад я расследовал проблему с индексами MySQL в большой таблице и понял, что невозможно создать запрос с помощью операторов use index или force index с использованием класса Laravel Eloquent.
Вот почему я попытался это исправить:)
Позвольте мне представить простой пакет Laravel для удовлетворения этих потребностей: https://github.com/vpominchuk/laravel-mysql-use-index-scope
Установка
композитору требуется vpominchuk/laravel-mysql-использование-индекс-область
Использование
Просто укажите необходимый признак в вашей модели:
Модель
use VPominchuk\ModelUseIndex;
class MyModel extends Model
{
use ModelUseIndex;
...
...
}
В любом месте кода:
$builder = MyModel::where('name', $name)->where('age', $age)->
useIndex($indexName)->...
Индексы MySQL
Не забудьте создать именованный индекс с помощью миграции Laravel:
$table->index(['name', 'age'], 'user_age_index');
Доступные методы
использовать индекс($имя индекса) Говорит MySQL использовать индекс, если это возможно.
индекс силы(имя индекса $) Заставьте MySQL использовать индекс, если это возможно.
Оригинал: “https://dev.to/vpominchuk/laravel-how-to-use-use-index-and-force-index-for-eloquent-and-mysql-4n1”