Добавление индекса в динамический столбец mysql - PullRequest
1 голос
/ 22 июня 2011

У меня есть запрос на выборку, который имеет предложение where: WHERE CONCAT (att.subjectId, '#', att.classId) IN ('132 # 100').Я добавил составной индекс для subjectId и classId, но будут ли эти индексы полезны для такого динамического столбца.Если нет, то можно создать столбец в динамическом столбце, например, CONCAT (att.subjectId, '#', att.classId).

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Лучше всего я знаю, что MySQL не предлагает средств для создания индекса для результата выражения / функции.

Обходной путь - заполнить дополнительное поле с помощью триггеров и проиндексировать его.

0 голосов
/ 22 июня 2011

Вероятно, функции - не лучшая идея для предложений "где", они заставляют dbms выполнять "полное сканирование", что снижает производительность.

Я думаю, что лучше использовать несколько "(att.subjectId = '132 'и att.classId =' 100 ') "объединены с" ИЛИ "(для каждого термина в вашем списке" IN ") и добавьте несколько индексов для отдельных столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...