|
SQL. Помогите оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
DirecTwiX
20.03.13
✎
19:51
|
Мой вопрос не прошёл премодерации на хабре, поэтому я вернулся сюда)
Есть простой запрос: SELECT
На А (int) есть индекс. В зависимости от числа во внутреннем запросе время выполнения изменяется линейно. На 8млн запрос выполняется 60 секунд. Как оптимизировать? |
|||
1
МихаилМ
20.03.13
✎
19:57
|
||||
2
Fragster
гуру
20.03.13
✎
19:59
|
не использовать вложенный запрос.
|
|||
3
Fragster
гуру
20.03.13
✎
20:00
|
(1) нет, эта тема увеличивает долю не-лайфа на мисте
|
|||
4
Живой Ископаемый
20.03.13
✎
20:00
|
2(0) только после того как ответишь в своей предыдущей ветке, а лучше никогда
|
|||
5
Fragster
гуру
20.03.13
✎
20:00
|
хотя это в любом случае скан
|
|||
6
SherifSP
20.03.13
✎
20:03
|
Прострелить коленку не предлагать?)))))
|
|||
7
NS
20.03.13
✎
20:06
|
У тебя вычисляемое поле, оно вмегда без индекса, по нему слишком долгая сортировка. Поставь на него условие, например cnt>1
|
|||
8
bahmet
20.03.13
✎
20:09
|
(0) тебе же в предыдущей ветке писали про кеш и прочее.
и про кривость запроса и тд. сразу не понятно? если написать как увеличить кеш - то потом будет вопрос: лимит 32кк - выполняется полчаса, как оптимизировать? |
|||
9
МихаилМ
20.03.13
✎
20:10
|
(0)
в limit очень желательно указывать order |
|||
10
DirecTwiX
20.03.13
✎
20:28
|
(7) Ставил. Толку ноль. 10% времени можно выиграть.. Но суть не в этом
(8) Искренне не понимаю, что хочешь сказать. Какой кеш? Ты оптимизируешь запросы увеличивая кеш? В каком месте запрос кривой? Что-нибудь путное можешь сказать? |
|||
11
Живой Ископаемый
20.03.13
✎
20:39
|
почему он кривой, если он выдает тебе что нужно?
|
|||
12
DirecTwiX
20.03.13
✎
20:41
|
(11) Вот кто-то говорит, что он кривой.. Хотя сам ничего не понимает видимо
|
|||
13
NS
20.03.13
✎
20:46
|
А нельзя просто хранить таблицу с полями а и cnt, с индексом по cnt?
Тогда твой запрос будет выполняться моментально. |
|||
14
Живой Ископаемый
20.03.13
✎
20:48
|
2(12) капец... тогда скажи ему что тебе сказали что твой запрос прямой.
|
|||
15
acsent
20.03.13
✎
20:51
|
какая операция самая дорогая по профайлеру?
|
|||
16
be-may
20.03.13
✎
20:53
|
а в чем разница между limit и top ?
// ну, мне так.. чисто для себя узнать. |
|||
17
acsent
20.03.13
✎
20:53
|
(16) в данном случае ни в чем
|
|||
18
be-may
20.03.13
✎
20:56
|
(17) а не в данном ? Просто впервые вообще слышу про limit..
|
|||
19
be-may
20.03.13
✎
20:58
|
у яндекса спрашивала. Ничего путного не нашла)
ну разве что вот : http://parser.groundzero.ru/425/52154/ говорят, топ быстрее. |
|||
20
mistеr
20.03.13
✎
22:11
|
(0) В чем смысл запроса? Топ 10 самых популярных среди всех, или там еще условия будут?
Сколько строк в реальной таблице и с какой скоростью они туда добавляются? |
|||
21
Fragster
гуру
20.03.13
✎
22:35
|
(18) это mysql а не mssql
|
|||
22
mistеr
20.03.13
✎
22:35
|
(0) С каких пор на Хабре и в вопросах премодерация?
|
|||
23
DirecTwiX
20.03.13
✎
22:39
|
(20) Именно. Пока только топ.
В таблице 14млн строк. В 100 ещё точно вырастет |
|||
24
DirecTwiX
20.03.13
✎
22:39
|
(22) Может потому что у меня не было аккаунта до этого)
|
|||
25
Fragster
гуру
20.03.13
✎
22:39
|
(23) денормализируй, как было указано. если нужно - то по периодам/отрезкам.
|
|||
26
YHVVH
20.03.13
✎
22:42
|
интересно каким образом оптимизировать запрос, если он даже не полностью. что можно оптимизировать в обычной группировке.
|
|||
27
Fragster
гуру
20.03.13
✎
22:46
|
зачем делать запрос по миллионам строк, если на выходе их в 10000 раз менье?
|
|||
28
DirecTwiX
20.03.13
✎
22:59
|
(26) Он полностью.
(25) Поподробнее) Уже думал хеш-множество сделать, но не получаетсяя) |
|||
29
YHVVH
20.03.13
✎
23:03
|
(28) если это весь запрос то почему нельзя сразу сгруппировать
|
|||
30
DirecTwiX
20.03.13
✎
23:04
|
(29) Внтуренний запрос для отладки. Иначе я буду ждать несколько минут
|
|||
31
YHVVH
20.03.13
✎
23:09
|
(30) ну если не трогать внутренний запрос, то он превращается в банальную группировку что там можно оптимизировать то?
|
|||
32
Fragster
гуру
20.03.13
✎
23:09
|
запили при вставке в основную таблицу вставку/обновление в таблицу "итогов"
|
|||
33
mistеr
20.03.13
✎
23:32
|
(23) В общем ясно, что изменения не realtime. Общий подход - материализовать и обновлять по расписанию. Реализация зависит от второго вопроса.
>В 100 ещё точно вырастет. Да хоть двести. Я-то спросил "с какой скоростью". Сколько в сутки, в час, в секунду? |
|||
34
DirecTwiX
20.03.13
✎
23:32
|
(32) Таблица итого будет больше этой минимум в 10000 раз
|
|||
35
sdv2000
20.03.13
✎
23:33
|
(34) честно-честно?
|
|||
36
DirecTwiX
20.03.13
✎
23:35
|
А ннет. Это в другом запросе так. В этом таблица итого спасёт
|
|||
37
sdv2000
20.03.13
✎
23:35
|
ну слава богу
|
|||
38
rs_trade
21.03.13
✎
00:19
|
(0) вьюху запили. нормально должно быть.
|
|||
39
DirecTwiX
21.03.13
✎
02:04
|
(38) Что значит?
|
|||
40
rs_trade
21.03.13
✎
10:09
|
(39) Попробуй сделать вьюшку, в которой будут сгрупированные результаты храниться. Запросом к вьюшке обращайся.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |