Мы используем базу данных mysql с 150 000 записей (имен). Наши поиски в поле "имена" выполняются с помощью функции автозаполнения в php. У нас есть таблица, индексированная, но все еще чувствую, что поиск немного вялый (несколько полных секунд против чего-то вроде Google Finance с почти мгновенным ответом). Мы придумали w/2 возможности, но хотели получить больше информации:
Можем ли мы создать кучу (много тысяч или более) хранимых процедур для ускорения поиска или создадим, что многие хранимые процедуры завершают db?
Есть ли более быстрая альтернатива mysql для операторов "select" (скорость при вставке и обновлении строк не слишком важна, поэтому мы можем принести в жертву, если это необходимо). Я смутно слышал о BigTable и других, которые не поддерживают инструкции JOIN.... нам нужны операторы JOIN для некоторых наших других запросов, которые мы делаем.
спасибо
Неправильное время выполнения запроса, указанное вами, является результатом неправильной конфигурации сервера или неправильной схемы базы данных или того и другого. Пожалуйста, прочтите этот ответ на serverfault или обновите свой вопрос здесь: укажите конфигурацию сервера, часть схемы базы данных и запрос проблемы, а также explain select ...
Да, вам нужно истечь кеш, если вы измените данные, но, как вы сказали, это не так, что вы можете даже сделать это на полуавтоматической основе и не беспокоиться об этом, если это необходимо. Вы должны проверить эту статью в MySQL.com, а также, возможно, изучить механизм хранения MEMORY (извините, новый и не может размещать более одного гиперссылка на сообщение?!), которая требует немного кодирования для использования, но может быть чрезвычайно эффективной.
Какое фактическое время запроса (vs page time)? На достаточно современном сервере, который не загружен в ад, MySQL должен иметь возможность делать запрос автозаполнения на 150 тыс. Строк намного, намного, быстрее, чем две секунды. Отсутствуют некоторые индексы?
Вам необходимо кэшировать информацию в памяти, чтобы избежать повторных вызовов в базу данных.