2012-05-09 4 views
-2

Я новичок в php и mysql. Теперь я сталкиваюсь с проблемой: мне нужны данные поиска в большой базе данных, но для поиска слова требуется более 3 минут, иногда время ожидания браузера. Я использую метод FULLTEXT для поиска, поэтому любое решение для уменьшения времени поиска?Медленный поиск по php

+0

Какова общая база данных? Что говорит 'EXPLAIN [sql statement]' say? –

+2

Вы хотите включить * некоторые * детали, по крайней мере: что такое схема/индексы для таблицы (-ов), с которой вы запрашиваете, и каков фактический запрос, который вы используете? –

+0

вы можете попробовать 'select requiredFields From tableName, где поле типа '% inputText%'' –

ответ

1

Создайте индекс для поля таблицы, который вы предпочтете впоследствии, даже если потребуется какой-то объемный запрос, он должен вернуть наилучшие результаты за меньшее время.

1

Это не ответ на ваш вопрос прямо, но это предложение:

У меня была такая же проблема с полнотекстового поиска, поэтому я перешел на ГУМЗ:

http://lucene.apache.org/solr/

Это поисковый сервер на основе на библиотеке Lucene, написанной на Java. Он используется некоторыми из самых масштабных сайтов:

http://wiki.apache.org/solr/PublicServers

Так скорость и масштабируемость не является проблемой. Однако вам не нужно знать Java для ее реализации. Он предлагает интерфейс REST, который вы можете запросить и даже дает возможность возвращать результаты поиска в формате массива PHP.

Вот официальный учебник:

https://builds.apache.org/job/Solr-trunk/javadoc/doc-files/tutorial.html

SOLR просматривает индексированные файлы, так что вам нужно, чтобы получить ваше содержимое базы данных в XML или JSON файлы. Вы можете использовать расширение импорта данных обработчика для этого:

http://wiki.apache.org/solr/DataImportHandler

Для запроса интерфейса REST вы можете просто использовать get_file_contents() функции PHP или скручивание. Или PHP SDK для ГУМЗА:

http://wiki.apache.org/solr/SolPHP

0

Зависит от того, насколько велика ваша базы данных. Добавление индекса для поля, которое вы ищете, - первое, что нужно сделать.

У меня была та же проблема, и добавление индекса для поля отлично работало.

Смежные вопросы