|
|
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Сейчас стоит задача следующая: в базе есть поле text с содержимым filter5=Английский filter8=Онлайн обучение do=goods id_s=yazyki st=4 page=1 view=norm show=all При заходе на страницу мне выдается множество GET запросов Array ( [price_from] => [price_to] => [filter5] => Array ( [0] => Украинский [1] => Английский) [filter8] => Array ( [0] => Онлайн обучение ) [do] => goods [id_s] => yazyki [st] => 4 [page] => 1 [view] => norm [show] => all [search_goods] => 1 [sort_type] => ASC ) Моя задача взять все эти GET запросы и найти в поле text максимальное количество совпадений. Вариант с LIKE не получился, т.к. я делаю SELECT * FROM `metalinks` WHERE name LIKE '%filter5=Английский%' и это неправильно. Помогите реализовать алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 11:29:00 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
Распарсите Get и слейте во временную таблицу. Постройте запрос. связывающий её с исходной, и, группируя по таблице данных, выберите запписи с максимальным количеством Идов из временной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 22:41:54 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
Akina, хорошо, но боюсь следующей проблемы. При посещаемости в 1 000 человек надо каждую страницу вот так записывать в базу, сранивать, а потом базу чистить (возможно раз в сутки). Не будет ли это колоссальной нагрузкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 09:13:11 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
igramnetAkina, хорошо, но боюсь следующей проблемы. При посещаемости в 1 000 человек надо каждую страницу вот так записывать в базу, сранивать, а потом базу чистить (возможно раз в сутки). Не будет ли это колоссальной нагрузкой? так не записывай в базу, кто тебя заставляет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 10:59:24 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
igramnetAkina, хорошо, но боюсь следующей проблемы. При посещаемости в 1 000 человек надо каждую страницу вот так записывать в базу, сранивать, а потом базу чистить (возможно раз в сутки). Не будет ли это колоссальной нагрузкой? не хочу огорчать. но ....начинать про нагрузку думать надо тогда, когда вы будуте отвечать на подобные вопросы другим на форуме. до этого - либо всё будет нормально - либо при нагрузке вы не успеете бегать на форум за советами. сделать надо так чтобы работало. а потом думать про нагрузку. а думать начать надо с вопроса - что за ересь в постановке задачи!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 11:28:00 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, таблица фильтры 1do 1 2 how 1 3 ... айди фильра имя тип таблица значиний фильтров (если набор значений ограничен тип=1 скажем тип 2 неограничен) получаете с сайта для ограничиных наборов значений не петя вася коля маша английский и прочая ересь, а числа из таблицы значений...для неограниченых - ну уже как есть таблица собвтенно связей чегото с значениями фильтра айди_чегото айди_фильтра айди_значения (нулл если фильтр может быть любого значения) экстра - сюда записывать значения фильтров для которых нету набора значений строгого и тогда будет на чтотоА например 10 записей , ваш запрос ищет записи где совпадает одно ИЛИ другое итд... и по числу найденых строк для чтотоА - знаем сколько значений фильтра совпало. ЗЫ можно разделить - фильтры с ограниченым набором значений и неограниченым (последняя таблица на две разделяеться) айди_чегото айди_фильтра(с огр. наб. зн) айди_знач айди_чегото айди_фильтра(с неогр.) значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 11:34:59 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
igramnetбоюсь следующей проблемы Простите, но не я - архитектор. Не я изобрёл такую просто бредовую с точки зрения озвученной задачи структуру. Ладно, был бы какой голимый EAV - так тут вообще всё в кучу, никакой нормализации! И фильтрация по пересечению наборов - если не конвертировать из "всё в одной строке" хотя бы в EAV, то сервер не то что тысячу - и десятка клиентов не удержит. Посему я могу только сказать, как выполнить задачу выбранным Вами методом на построенной Вами архитектуре. Да, будет работать хреново. Но улучшению и оптимизации это всё в нынешней форме вряд ли поддаётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 15:53:35 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
Akinaigramnetбоюсь следующей проблемы Простите, но не я - архитектор. Не я изобрёл такую просто бредовую с точки зрения озвученной задачи структуру. Ладно, был бы какой голимый EAV - так тут вообще всё в кучу, никакой нормализации! И фильтрация по пересечению наборов - если не конвертировать из "всё в одной строке" хотя бы в EAV, то сервер не то что тысячу - и десятка клиентов не удержит. Посему я могу только сказать, как выполнить задачу выбранным Вами методом на построенной Вами архитектуре. Да, будет работать хреново. Но улучшению и оптимизации это всё в нынешней форме вряд ли поддаётся. ну не скажи... давай сойдёмся что сервер спокойно обработать ....ГДЕ поле похоже "%петя%" а теперь нам надо 8 проверок ВЫБОРКА_ЕЛЕМЕНТАРНАЯ ОБЬЕДЕНИТЬ х8 раз и всё это обернуть в групировку по айди... формально нагрузка в восем раз возрастёт... реально поменьше...ведь не все 8 раз с винчестера читать. субд ведь размещает в памяти на время считанные блоки с винчестера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 16:49:23 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
alex564657498765453субд ведь размещает в памяти на время считанные блоки с винчестера...Загвоздка в том, что для выполнения запроса с alex564657498765453ГДЕ поле похоже "%петя%"субд придётся каждый раз вычитывать _всю_ таблицу. Ну, если она в память влезает, тогда mmmkay... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 17:02:45 |
|
||
|
Максимальное совпадение в SQL запрос.
|
|||
|---|---|---|---|
|
#18+
tanglir, вообщето влезет... как думаешь - в его случае на сколько там данных?мегабайт 5 макс 10 :) но это всё согласен - бредни такие запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 17:12:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38795942&tid=1833964]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 329ms |

| 0 / 0 |
