Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите с оптимизацией двух MqSQL запросов


Автор: AlexBell 1.12.2012, 15:59
Добрый день. 
Подскажите, пожалуйста, с решением задачки по оптимизации пары запросов к MySQL. 

Есть сайт, который ищет рецепты по ингредиентам. Каждому рецепту может выставлятся рейтинг.
Собственно вопрос в двух запросах.

1. Запрос формирования облака ингредиентов
На входе
массив id ингредиентов (некоторые из них - обязательные),
массив id исключенных ингредиентов,
сложность (число от 1 до 5),
время (число от 1 до 5),
массив id сайтов,
массив id типов кухонь,
массив id типов блюд.

На выходе нужно получить просто массив из 7 ингредиентов (id и название), определяется массив по следующим алгоритмам:
- В верху списка показываются ингредиенты, при добавлении которых мы сможем получить больше рецептов (имея ввиду то, что уже было введено как исключения и ингредиенты ранее). Если таких ингредиентов нет, то вверху списка оказываются такие ингредиенты, при добавлении которых найдётся наибольшее количество рецептов, таких что нужно добавить ещё только один ингредиент чтобы их приготовить.
- Далее ингредиенты сортируются по количеству поисков с данным ингредиентом за последние 90 дней. Чем больше поисков - тем выше ингредиент.

Мы этот запрос сделали, но он работает очень медленно. Нужно, видимо, сделать заново или подсказать нам ходы оптимизации.


2. Запрос формирования результатов поиска
На входе тут тоже самое

На выходе
общее число найденных рецептов,
число уникальных сайтов (источников),
ну и собственно массив рецептов.
Каждый рецепт в массиве должен содержать данные:
id,
рейтинг (сейчас вычисляется подзапросом SELECT SUM(`rate`)/COUNT(1) FROM `rec_ratings` WHERE `rec_id`=%d),
другие параметры рецептов


Дайте знать, пожалуйста, если можете помочь по этому вопросу, можно личным сообщениеи или в почту [email protected].
Описание выше может быть немного запутанным, но если у вас есть хороший опыт в MySQL и вы готовы помочь, мы можем обсудить подробности и договориться о платной консультации, например.

Автор: Akina 1.12.2012, 19:30
Это - во фриланс

Автор: tzirechnoy 3.12.2012, 13:05
Цитата
Мы этот запрос сделали, но он работает очень медленно. 


Товарищи учёные! У меня в подвале третий год происходит подземный стук. Объясните пожалуйста, отчего и почему он происходит.

Автор: Akina 3.12.2012, 13:20
Вот и мне кажется, что это сам горе-программист пишет...

Автор: AlexBell 3.12.2012, 13:31
tzirechnoy, 

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

Добавлено @ 13:33
нет, это не горе программист. Потому не могу вам дать подробную техническую какуюто информацию, т.к. не силён в программмировании.

Могу задачу объяснить и показать, запрос, который у нас уже есть. Но было бы правильнее это делать уже лично, договорившись об условиях, а не в общем форуме.

Автор: Akina 3.12.2012, 14:12
Цитата(AlexBell @  3.12.2012,  14:31 Найти цитируемый пост)
Описание выше может быть немного запутанным

Оно - просто никакое. Что есть, что нет...

Цитата(AlexBell @  3.12.2012,  14:31 Найти цитируемый пост)
нет, это не горе программист. Потому не могу вам дать подробную техническую какуюто информацию, т.к. не силён в программмировании.

Тогда дайте по башке программисту - пусть он сам выложит задачу. Грамотным техническим языком.

Цитата(AlexBell @  3.12.2012,  14:31 Найти цитируемый пост)
было бы правильнее это делать уже лично, договорившись об условиях, а не в общем форуме.

Уже один раз же сказал, кажется - такие вещи во http://vingrad.ru/ обсуждают. 

Автор: tzirechnoy 3.12.2012, 19:50
Цитата
Вот и мне кажется, что это сам горе-программист пишет...


У меня как-то и мысли не возникло, что это можэт быть кто-то ещё.

Но я не про горе- (все мы когда-то начинали). Я про то, что это уметь надо -- сделал задачу, просит помощи в оптимизацыи, но не показал, как он это сделал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)