Forum Webscript.Ru

Общие => Базы данных => Тема начата: Forza от 08 Августа 2004, 16:28:38

Название: об оптимизации запросов
Отправлено: Forza от 08 Августа 2004, 16:28:38
Что в общем случае сильнее влияет на скорость выполнения запросов – индексирование столбца или использование типа 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. Этот вопрос задан не из-за того, чтобы оптимизировать работу с описанной таблицей (это и так понятно, как сделать), а чтобы поглубже разобраться в оптимизации запросов.
Название: об оптимизации запросов
Отправлено: Меняздесьдавнонет от 08 Августа 2004, 21:02:46
Цитировать
Forza:
Что в общем случае сильнее влияет на скорость выполнения запросов

индекс.
Цитировать
общий размер 172408 байт

на такой смехотворной таблице накладные расходы сводят все тестирование на нет
Цитировать
Forza:
ничего не содержать

экономия ста килобайт - это да, конечно - тема, о которой стоит говорить.
Название: об оптимизации запросов
Отправлено: Forza от 08 Августа 2004, 21:05:26
Цитировать
RomikChef:
экономия ста килобайт - это да, конечно - тема, о которой стоит говорить

Цитировать
Forza:
p.s. Этот вопрос задан не из-за того, чтобы оптимизировать работу с описанной таблицей (это и так понятно, как сделать), а чтобы поглубже разобраться в оптимизации запросов.