РЕДАКТИРОВАТЬ: Когда я удаляю индекс в столбце, в котором я ищу, время отклика изменяется от 2,5 до 2,6 сек.Разве разница не слишком большая?
Я пишу небольшое приложение, которое использует плагин jquery для автозаполнения.Пользователь начинает вводить имя своего родного города, и мой код запрашивает таблицу из 2,7 миллионов строк с названиями городов (база данных maxmind city) с помощью AJAX.Я устанавливаю индекс для столбца db, в котором выполняется поиск (название города).
Когда я запускаю следующий запрос (используя активную запись CodeIgniter), класс эталонных тестов CI 2.1922 сек (только для этого запроса,так что это не включает время загрузки html-страницы).
ВЫБРАТЬ * ИЗ ГОРОДОВ, ГДЕ название города нравится "% bang%"
Когда я запускаю тот же запрос в phpmyadmin Iполучить: Запрос занял 0,0068 с
Когда я запускаю
ВЫБРАТЬ * ИЗ ГОРОДОВ, ГДЕ название города LIKE "% bangkok%"
Отчеты эталонного класса CI 2,1951 сек .Когда я запускаю этот же запрос в phpmyadmin, я получаю: Запрос занимает 2,1811 с.
Таким образом, хотя время отклика CI практически одинаково для обоих запросов, те, которые выполняются в phpmyadmin, сильно различаются.
Вопросы
Очевидно, что запрос 2,7 миллиона строк будет относительно медленным, но есть ли способ получить приличное время отклика для такой функции автоматического предложения?2,5 секунды слишком медленные.На самом деле, нет быстрого способа поиска с синтаксисом «LIKE» в массиве PHP, содержащем все 2,7 миллиона строк.Будет ли Memcache вариант?
Почему различия времени отклика незначительны при использовании CI Active Record, но так сильно отличаются в phpmyadmin?