2013-09-18 2 views
-1

как я могу выполнить поиск на основе таких комбинаций, как 50 параметров, таких как фильтры. Этими фильтрами могут быть бренд размера цены и т. Д. Таким образом, мы можем получить разные страницы на основе этих параметров. Таким образом, одна ссылка может иметь размер бренда, другой цвет бренда одного размера и так далее. Мой вопрос заключается в том, что будет наилучшей практикой для запроса базы данных на основе этих параметров. У меня есть один идеал, чтобы зашифровать их в последовательность 101101101 1 и 0 и выполнить поиск.поиск в базе данных лучшие результаты

Так что у меня есть более чем 2 миллиона возможных комбинаций, и я хочу сократить время запроса. Я слышал о btree, но я не знаю, как его использовать, я дал своим столбцам таблицы соответствующие индексы, но с этой точки я не знаю, в каком направлении я должен идти. Как мой запрос будет выглядеть.

+0

Я понятия не имею, что вы пытаетесь сделать. Пожалуйста, предоставьте более подробную информацию. –

+0

Вы должны быть конкретными в своих вопросах на SO, задавать вопросы, которые позволят получить краткий ответ. На данный момент это слишком широко. – Fluffeh

ответ

0

Я думаю, что это хорошая идея «зашифровать» параметры, но не делайте этого как «10100010», потому что тогда вам нужно будет хранить эти значения в виде строки. Скорее кодируйте его как base10 номер. Это означает, что 100101 = 1 * 32 + 0 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 37. Конечно, с 50 флагами вы получили бы слишком большой номер для хранения как bigint (который составляет 32 байта), поэтому попробуйте логически сгруппировать параметры и использовать для них 2-3 поля. Проблема с этим aproach связана с запросом данных - вам нужно будет написать функцию, извлекающую флаг из числа, чтобы иметь возможность запрашивать данные только одним параметром, а не всеми из них.

+0

Хорошо, спасибо за идее, но я думаю, что btree это лучший. Итак, что я делаю сейчас, это добавить индексы в столбцы таблицы, но с этого момента я теряюсь в поиске btree. Таким образом, проблема будет возобновлена ​​из-за того, что у вас будет n количество строк и поиск алгоритма поиска, который будет согласован независимо от того, сколько строк осталось. – user2790534

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