Многокритериальный алгоритм поиска - PullRequest
1 голос
/ 25 августа 2009

Вот проблема: у меня есть огромная (на моем уровне) база данных mysql с техническими продуктами. У меня есть что-то вроде 150 тыс. Строк продуктов в моей базе данных плюс от 10 до 20 других таблиц с таким же количеством строк. Каждая таблица содержит много критериев. Некоторые из критериев являются текстовыми значениями, некоторые являются десятичными, некоторые просто логическими. Я хотел бы предоставить веб-доступ (php) к этой базе данных с фильтрами по каждому критерию, но я не знаю, как сделать это действительно быстро. Я начал создавать большую таблицу со всеми объединенными столбцами, чтобы избежать многократного объединения, это круто, быстрее, чем большое объединение, но все еще очень и очень медленно. Размещение индекса по всем критериям не улучшает ситуацию (и я слышал, что это плохая идея). Мне было интересно, есть ли какие-нибудь классные алгоритмы, которые могли бы помочь мне предварительно обработать поиск по нескольким критериям. Любая идея ?

Спасибо, вперед.

Ответы [ 2 ]

1 голос
/ 26 августа 2009

Если вы разочарованы попыткой сделать это в SQL, вы можете взглянуть на Lucene . Позволяет выполнять поиск в диапазоне, полный текст и т. Д.

0 голосов
/ 25 августа 2009

Попробуйте полнотекстовый поиск Возможно, вы захотите объединить текстовые поля и выполнить полнотекстовый поиск .

Оптимизация запросов Для других столбцов оцените их в порядке того, как часто вы ожидаете их использовать. Напишите тестовый набор запросов и выполните их все, чтобы получить представление о производительности. Затем начните добавлять индексы и посмотрите, как это влияет на производительность. Продолжайте добавлять индексы, пока производительность улучшается. Остановись, когда станет хуже.

Использовать объяснительный план Поскольку вы не предоставили свой SQL или макет таблицы, я не могу быть более конкретным. Но используйте команду Explain Plan , чтобы убедиться, что ваши запросы попадают в индексы, а не в сканирование таблиц. Это может быть непросто, поскольку такие тонкие вещи, как порядок столбцов в запросе, могут повлиять на работоспособность индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...