У меня есть 20 000 столбцов в моей базе данных, и очень часто делается запрос для перечисления всех столбцов определенного c шаблона имени таблицы:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE 'pattern_%' AND TABLE_SCHEMA = 'my-db-name'
Обычно это делается быстро, но иногда требуется некоторое время (до 10 секунд, я видел один раз).
Чтобы оптимизировать его, я подумал сделать индекс на INFORMATION_SCHEMA
, однако, как я понимаю, это представление, и я могу ' t создать индекс для?
ALTER TABLE `INFORMATION_SCHEMA`.`COLUMNS` ADD INDEX `table_name__table_schema` ( `TABLE_NAME` , `TABLE_SCHEMA` )
1044 - Отказано в доступе для пользователя 'root' @ '%' к базе данных 'information_schema'
Есть 40 "шаблоны" в целом, которые я часто использую.
Есть ли способ оптимизации таким образом, чтобы этот запрос был максимально быстрым?
Объяснение запроса: