Задать вопрос
@nimfai
Full stack developer

Как создавать индексы MySQL в Laravel?

Здравствуйте!
Создаю таблицу тегов
public function up()
    {
        Schema::create('tags', function (Blueprint $table) {
            $table->increments('tag_id');
            $table->integer('c_id');
            $table->string('tag_name');
            $table->text('tag_description')->nullable();
            $table->string('tag_color')->default('#ffffff');
            
            $table->index(['c_id', 'tag_id']);
        });
    }


Миграция создаёт индексы для tag_id и для c_id, однако при добавлении в таблицу вносятся данные с сортировкой по tag_id (он же primary key), а надо по c_id.
Делаю запрос (в таблице 7 записей для примера)
EXPLAIN SELECT * FROM tags WHERE c_id=1
Значение rows показывает 7, я правильно понимаю что индекс не отработал?
Подскажите пожалуйста как правильно указать индексы в Laravel.

PS: то есть я хочу на выходе получить, что бы вносились данные отсортрованные по c_id.
Сейчас данные вносятся так:
5a8c1876eef64606804195.png
Нужно получить вот так:
5a8c18877e0c4523411017.png
  • Вопрос задан
  • 1618 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
solotony
@solotony
покоряю пик Балмера
если вам нужно иметь данные отсортированные по c_id указывайте в выборке `order by c_id`

наличие индексов само по себе не определяет порядок сортировки при выборке.

вносятся данные с сортировкой по tag_id (он же primary key), а надо по c_id.


данные вносятся и хранятся безо всяких сортировок. если вы пишете без удалений, то данные будут лежать в естественном порядке записи , если с удалениями - тут уже никто не знает что будет
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@porozhnyy
Напишу только это:
$table->increments('tag_id');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы