Почти тот же ответ:
CASE
WHEN
(NOT TRIM(Installation) GLOB '*[^0-9]*') AND TRIM(Installation) like '_%'
THEN CAST(TRIM(Installation) AS BIGINT)
END AS intInstallation
Объяснение:
[^0-9]
= каждый символ, который не является числом NOT
вы получить все установки, у которых нет символа, который не является числом _
один символ один раз и %
0 или более любого символа. После вашего редактирования я смотрю на запрос:
THEN CAST(TRIM(shortcycle0_.Installation) AS shortcycle0_.BIGINT)
Замените его на:
THEN CAST(TRIM(shortcycle0_.Installation) AS BIGINT)
Да, существует.
Если Вы смотрите на журнал медленного запроса, существует опция --log-queries-not-using-indexes
Нет.
Добавление индексов волей-неволей ко всем "медленным" запросам также замедлится, вставляет, обновляет и удаляет.
Индексы являются уравновешиванием между быстрыми запросами, и быстро изменяется. Нет никакого общего или "правильного" ответа. Нет, конечно, ничего, что может автоматизировать это.
Необходимо измерить улучшение через целое приложение, как Вы добавляете и изменяете индексы.