|
|
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Maxim BogukУвы... не решается задача через WINDOW FUNCTIONS просто потому что набор условий в подзапросе не задает реализуемое условие сортировки. Так как вот для 2х пар: rankGid rankZak p1(1,2) и p2(2,1) нельзя сказать что по условию которое в подзапросе что p1>p2 и так же нельзя сказать что p2>p1 и при этом они не равны. А значит отсортировать невозможно а значит COUNT(*) на оконную функцию не заменяется. -- Maxim Boguk www.postgresql-consulting.ru И я о том же, вы просто грамотнее расписали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:03 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukvadipok В этом примере тоже видно, что он работает не так, как мне надо. В общем решение задачи через window functions сводится к придумыванию такой order by конструкции которая бы соответствовала сортировке по t.rankGid < t1.rankGid AND t.rankZak < t1.rankZak Забавно вроде и простая задача но в лоб пока не решается. -- Maxim Boguk www.postgresql-consulting.ru не вдаваясь -- обычно это сорт по нормальному интервалу (С не строгим неравенством по первому измерению)+ выкалывающее условие case_when в агрегате (окне). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:04 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
qwwqvadipokЩукина Анна, nskv nskvz gid zak rankgid lx rankzak ly d alpha Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. -- кактотак +100500, в другой раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:05 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, да, трудно не согласиться с тем, что окна притянуть к задаче не получилось. в качестве альтернативы предлагаю, всё же, попробовать отойти от формы коррелированного подзапроса во фразе Select к форме с джойном. возможно, на неиндексированных наборах данных она будет быстрее подзапросов: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 18:09 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, ещё, как вариант, можно смотреть в сторону LATERAL-ных подзапросов. Но, по сути, это будет что-то среднее между джойном и коррелированным подзапросом. Из плюсов будет отсутствие группировки (которая есть в варианте с джойном) и получение обоих вычисляемых значений за одно обращение к таблице, из минусов - та же самая коррелированность и повторное выполнение вычислений для каждой строки исходной таблицы portal.tempCorelation2, что и в случае с подзапросами во фразе Select ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 18:14 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Понял, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 11:26 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, В приведенном примере тестовых данных комбинация (nskv, nskvz, rankzak) уникальна. Действительно ли это условие выполняется? Кажется, это могло бы помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 15:19 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, ковыряя в носу (не факт что это быстро) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. -- думаю, это скорее медленно и печально, чем наоборот. но такое вот разложение придумалось. если научиться извлекать "квадратичный член" на первом проходе -- было бы неплохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 21:04 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38982680&tid=1997941]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 472ms |

| 0 / 0 |
