Что в общем случае сильнее влияет на скорость выполнения запросов – индексирование столбца или использование типа CHAR вместо VARCHAR?
Проводил эксперименты на таблице в 2253 строки и 19 столбцов (общий размер 172408 байт).
Проверял время выполнения запроса SELECT COUNT(*) FROM tableName WHERE eng_name LIKE ‘a%’;
Поле eng_name было изначально типа VARCHAR(75).
Оказалось, что для того чтобы снизить время выполнения до 0,00 секунд, нужно eng_name сделать типа CHAR(75), а также обязательно его проиндексировать.
Во всех остальных трёх случаях (VARCHAR(75) и индекс, CHAR(75) и нет индекса, VARCHAR(75) и нет индекса) время выполнения одинаково – 0,05 секунд.
Интересно, а как на вашей практике дело обстояло с более крупными, чем эта, таблицами? Увеличивалась ли скорость выполнения запроса при индексации столбца типа VARCHAR, или нет?
Не очень хочется приводить в данном случае eng_name к типу CHAR, т.к. с одной стороны eng_name может содержать достаточно длинную строку (до 75 символов), а другой стороны – ничего не содержать (сейчас таких строк 714 из всего 2253).
p.s. Этот вопрос задан не из-за того, чтобы оптимизировать работу с описанной таблицей (это и так понятно, как сделать), а чтобы поглубже разобраться в оптимизации запросов.