|
SQL. Оптимизировать ещё один запрос | ☑ | ||
---|---|---|---|---|
0
DirecTwiX
21.03.13
✎
20:07
|
На этот раз, надеюсь, последний)
До этой ветки была SQL. Помогите оптимизировать запрос с следующим запросом:
Суть простая - получить самые популярные элементы. Чтобы быстро выполнять такой запрос можно сделать таблицу итогов, где считать количество.. Но основной запрос имеет следующуу форму:
Суть немного изменилась, но всё равно осталась простой - Самые популярные элементы среди :B. Выполняется он тоже небыстро, нужно что-то придумать) У каждого :B в среднем 250 А. Таблицу итогов тут сделать сложно физически. Её размер будет превышать исходную таблицу в 250*250 в среднем, что никуда не годится. Да и запись/удаление будут выполняться очень затратно. Идеи?) |
|||
1
DirecTwiX
21.03.13
✎
20:09
|
Косяк... Неправильно последний запрос написал..
|
|||
2
DirecTwiX
21.03.13
✎
20:11
|
Вот второй запрос:
Суть немного другая - самые популярные элементы среди пользователей, у которых есть :A среди элементов. Если несложно, можно переместить в шапку? Спасибо |
|||
3
DirecTwiX
21.03.13
✎
20:12
|
сО следующим запросом*
Тоже просьба поправить) |
|||
4
Demiurg
21.03.13
✎
20:29
|
зачем вы хотите вернуть 8 миллионов строк?
|
|||
5
ILM
гуру
21.03.13
✎
20:34
|
(9) Когда 8 миллиардов пользователей, то почему бы и не вернуть 8 миллионов самых популярных элементов.
Ох, маркетолухи, они такие олухи. Я бы не возвращал, даже глядя по 100 штук в секунду, им понадобиться очень много времени (дня три не меньше). |
|||
6
DirecTwiX
21.03.13
✎
21:05
|
(4) 8млн для отладки (не хочу ждать несколько десятков минут). В идеале надо все.
|
|||
7
DirecTwiX
21.03.13
✎
21:06
|
(5) Пользователей меньше, в 250 раз примерно)
|
|||
8
КонецЦикла
21.03.13
✎
21:36
|
Такой запрос выполняется очень часто?
Заведи колонку "популярность" и не ипи моск Можно триггер повесить на запись |
|||
9
DirecTwiX
21.03.13
✎
22:41
|
(8) Планируется выполнять его очень часто
Как же такую колонку завести? Проблема в условии "самые популярные элементы среди пользователей, у которых есть :A среди элементов" |
|||
10
КонецЦикла
21.03.13
✎
22:47
|
(9) А это типа @А? Т.е. типа переменная?
Иди ищи Glory на SQL.ru, он умный :) |
|||
11
DirecTwiX
21.03.13
✎
22:58
|
(10) Да, переменная)
Ещё с научником на эту тему буду говорить) Надеюсь на что-нибудь умное) |
|||
12
КонецЦикла
21.03.13
✎
23:06
|
(11) У тебя там "Управление планетой Земля"?
Отпишись, интересно |
|||
13
Sorm
21.03.13
✎
23:48
|
(2) Мда... Используешь IN и спрашиваешь - "а че так долго?". Ниче, что "SELECT DISTINCT owner_id FROM tbl WHERE A=:A" выполнится для каждой строки "верхней" таблицы? Никаких IN при работе с большим количеством данных, только джойны по индексированным таблицам.
|
|||
14
DirecTwiX
21.03.13
✎
23:55
|
(12) Придумал сайт, верю что взлетит)
Идея самая что ни на есть простая) (13) У себя реализовано через джоин - этот писал от руки сразу в форум) Но за информацию спасибо. Соединяю по user_id, индекс на нём имеется. Норм? |
|||
15
Sorm
22.03.13
✎
00:14
|
(14) " У себя реализовано через джоин - этот писал от руки сразу в форум" - своебразная постановка задач.
|
|||
16
DirecTwiX
22.03.13
✎
01:07
|
(15) Главное - суть. Я же новую сструктуру пытаюсь придумать)
|
|||
17
КонецЦикла
22.03.13
✎
02:46
|
(14) А чо там? Секрет?
Кол-во пользователей как абонентов у приличного оператора сотовой связи |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |