покажите
Код:explain SELECT formalname FROM `d_fias_addrobj` WHERE shortname = 'г' AND formalname LIKE 'К%' ORDER BY formalname LIMIT 0 , 10
А теперь поясните.покажите
ой formalname LIKE 'К%' - зло отказывайтесь от негоКод:explain SELECT formalname FROM `d_fias_addrobj` WHERE shortname = 'г' AND formalname LIKE 'К%' ORDER BY formalname LIMIT 0 , 10
Ну да, вцелом как бы имя поля говорит, что там скорей всего varcharесли там текст, то запрос тогда не будет иметь смысла вообще. А я не думаю, что он настолько дурак
Ради интереса спрошу, это можно сделать с помощью запроса sql, без применения php?создаем отдельную колонку с первой буквой от твоего formalname, тип char(1)
При использовании индекса - не особо. А вот если при полном сканировании таблицы - скорее да. Если в полях, что ты дропнул было довольно много данных жежательно сделать оптимизацию таблицы.В добавок спрошу. Если дропну ненужные поля, это повлияет на скорость выполнения запроса?
Зачем отдельную колонку? Не проще ограничить длину индекса одним символом?>Уж лучше по первой букве отдельное поле и индекс на него
Это тоже медленно.Произвел индекс, теперь 0.2061 сек. Спасибо!
Я бы мог сделать это с помощью php, то есть беру первый символ поля formalname вставляю в соответствующее поле first_char. И так весь ~миллион записей, что будет производиться довольно долго.Ну вообще да, глупый ты вопрос задал, если честно. Через тот же phpMyAdmin это делается. ALTER TABLE ... и т.д. Наверняка же делал уже не раз это.
Новое поле сделал, потом его заполнил первыми буквами от твоего formalname и т.д. как я описал.
Это тоже медленно.
показывай эксплейн теперь