|
|
|
Оптимизация запроса (php+mysql)
|
|||
|---|---|---|---|
|
#18+
Привет, помогите оптимизировать запрос на сайте, написанном на php. В общем сайт представляет собой собрание фотографий, за которые можно голосовать. Вся информация о фотографиях хранится в таблице `photos`: id(int) | country (int) | city(int) т.е. каждая фотография сделана в определенной местности. Тип данных - int, т.к. Значение берется из других таблиц (`country` и `city`), названия (`country.name` и `city.name`) соответствуют идентификаторам из таблицы фото. Т.е. чтобы узнать, в каком городе сделан снимок - создает запрос: Select * from `city` where `city.id`='значение photos.city из таблицы photos' Аналогично и со странами. Также есть таблица, в которую заносятся все данные о голосованиях `rate`: win(int) | value(int) | date(date) Win - это идентификатор фотографии Value - значение голосования. Если голосовали "за", то в таблицу попадает значение +2, если против, то -1. Date - дата голосования. Таким образом можно составить рейтинг фотографий: Select *,sum(`value`) as `summa` from `rate` group by `win` where `date` = 'подставляем сюда период за какой надо выбрать значения' order by `summa` desc; Довольно простой и понятный запрос, а теперь - ВОПРОС!!! На странице с фотографией необходимо создать 3 графика "местонахождения" в рейтинге фотографии (по городу, по стране и вцелом по сайту). Другими словами нужно 3 массива, в котором содержалась следующая информация: $array = ('date20140101' => '1-e место', 'date20140102' => '30-e место, 'date20140103' => '283-е место'... и т.д.); Это для общего графика. Аналогичные массивы нужны также для города и страны. Т.е. Элемент массива $array['date20140101'] показывает рейтинг фотографии среди всех фотографий, за которые голосовали 1-го января. Соответственно для массивов с городом и страной надо показать на каком месте находилась эта фотография такого-то числа среди фотографий из этого города (страны) за которые голосовали в определенный день. Сложность даже не стом, чтобы подсчитать сумму баллов по необходимым условиям, а сколько узнать рейтинг. Если сначала запросить количество всех возможных результатов по необходимым условиям, создать рейтинг и найти в нем место этой фотграфии - необходимо сделать несколько запросов по таблице `rate` и связать ее с остальными таблицами. А в таблице `rate` Может быть несколько сотен тысяч записей. Что просто "накрывает" сервер. Может можно как-нибудь упростить запрос. Чтобы из него сразу возникал нужный массив. 3 запроса = 3 массива. Если мои рассуждения неверны, буду рад выслушать критику. Заранее благодарен, очень нужна ваша помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 22:35:57 |
|
||
|
Оптимизация запроса (php+mysql)
|
|||
|---|---|---|---|
|
#18+
OsterlitzДовольно простой и понятный запросАга, только неправильный. Osterlitz3 графика "местонахождения" в рейтинге фотографии (по городу, по стране и вцелом по сайту).делаем таблицу для этих дынных Код: sql 1. заполняем (если по городам, то пишем только ид города, по странам - ид страны, общий рейтинг - нуллы там и там) для примера - заполнение для статистики по городам Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. (за пониманием происходящего - в фак по использованию переменных) по мере необходимости добавляем дынные за новые даты можно и за текущую добавлять, insert on duplicate key update в помощь PS. а шрифт в теге срц, оказывается, не моноширинный О_о ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 05:56:55 |
|
||
|
Оптимизация запроса (php+mysql)
|
|||
|---|---|---|---|
|
#18+
у меня сразу возникает вопрос... - ну есть люди которые (вот мне мастер тырнета по просьбе назвать маршрутизатор роутер, назвал его Rauter ), или которые вместо того чтобы назвать value|val назовут znachenie|zn но чем руководствовался автор сей базы, изобретая название win ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 13:05:45 |
|
||
|
Оптимизация запроса (php+mysql)
|
|||
|---|---|---|---|
|
#18+
также не понятно, какой запрос надо помочь оптимизировать?! вообще подщёт позиции(для определённой записи) - запрос вроде Код: sql 1. 2. 3. 4. 5. тоесть самому добавить без всяких джоинов значение позиции - сколько есть елементов у которых критерий рейтинга меньше или равен нашему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 13:29:17 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38680750&tid=1834608]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 387ms |

| 0 / 0 |
