|
|
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Помогите плиз улучшить производительность запроса. В таблице 38 573 строки, нет индексов. В запросе таблица обращается на себя, для того, чтобы посчитать количество строк меньше и больше по определенному полю (rankZak). Попытался улучшить следующим образом, но после выполнения 220-х секунд, остановил, такая скорость не устраивает. Запрос работает правильно, проверял на маленьком срезе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 11:33 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, для начала попробовать добавить индекс по (nskv, nskvZ) в таблице tempCorelation3, если не поможет - привести explain analyze запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 11:38 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Alexiusvadipok, для начала попробовать добавить индекс по (nskv, nskvZ) в таблице tempCorelation3, если не поможет - привести explain analyze запроса. Эти таблицы только на одно использование, думаете есть смысл делать там индексы? План запроса сейчас: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 11:43 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokЭти таблицы только на одно использование, думаете есть смысл делать там индексы? скорей всего да, но без данных сказать точно нельзя. индекс на такой мелкой таблице создать очень быстро. проверьте и приведите explain analyze , если не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 11:50 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokДобрый день, коллеги! Помогите плиз улучшить производительность запроса. В таблице 38 573 строки, нет индексов. В запросе таблица обращается на себя, для того, чтобы посчитать количество строк меньше и больше по определенному полю (rankZak). Попытался улучшить следующим образом, но после выполнения 220-х секунд, остановил, такая скорость не устраивает. Запрос работает правильно, проверял на маленьком срезе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. используй оконный каунт с ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 11:58 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, перманентная копия создается ради только селекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 12:27 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
p2., да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:22 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
AlexiusvadipokЭти таблицы только на одно использование, думаете есть смысл делать там индексы? скорей всего да, но без данных сказать точно нельзя. индекс на такой мелкой таблице создать очень быстро. проверьте и приведите explain analyze , если не поможет. Индексы помогли, спасибо большое. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:24 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, если исключить коррелированные подзапросы из предложения Select и заменить их на оконные функции, как предлагал Ivan Durak, возможно, будет ещё быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:30 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, Приведите пожалуйста пример. Чет не догоняю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:31 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Щукина Аннаvadipok, если исключить коррелированные подзапросы из предложения Select и заменить их на оконные функции, как предлагал Ivan Durak, возможно, будет ещё быстрее Спасибо Аня, приведите плиз пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:32 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokIvan Durak, Приведите пожалуйста пример. Чет не догоняю.приведите тестовый набор данных, пригодный к использованию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:32 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Если вы имеете в виду сделать так Код: sql 1. 2. то я это по пробовал в первую очередь, результаты возвращает не то что мне надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:36 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, nskv nskvz gid zak rankgid lx rankzak ly d alpha"1018""14096"3.0967741935483923.38762214983712.000000000000000011.000000000000000000001777106"1018""14096"3.7096774193548428.16239316239327.000000000000000012.00000000000000001777106"1018""14096"3.5389610389610428.86666666666673.000000000000000013.00000000000000001777106"1018""14096"5.129.514563106796111.000000000000000014.00000000000000001777106"1018""14096"5.0196078431372532.622950819672110.000000000000000015.00000000000000001777106"1018""14096"3.6774193548387132.81553398058255.000000000000000016.00000000000000001777106"1018""14096"3.5598705501618133.72180451127824.000000000000000017.00000000000000001777106"1018""14096"3.701298701298743.74233128834366.000000000000000018.00000000000000001777106"1018""14096"3.724832214765145.06944444444448.000000000000000019.00000000000000001777106"1018""14096"5.225806451612945.482456140350912.0000000000000000110.00000000000000001777106"1018""14096"2.3529411764705955.64935064935071.00000000000000000000111.00000000000000001777106"1018""14096"3.7333333333333358.71559633027529.0000000000000000112.00000000000000001777106"1018""18963"3.7096774193548423.9069767441866.000000000000000011.00000000000000000000127834"1018""18963"5.225806451612928.11059907834111.000000000000000012.0000000000000000127834"1018""18963"5.130.87378640776710.000000000000000013.0000000000000000127834"1018""18963"3.5389610389610432.23826714801443.000000000000000014.0000000000000000127834"1018""18963"3.701298701298736.38036809815955.000000000000000015.0000000000000000127834"1018""18963"3.5598705501618137.66917293233084.000000000000000016.0000000000000000127834"1018""18963"2.3529411764705938.1595092024541.0000000000000000000017.0000000000000000127834"1018""18963"3.7333333333333339.08256880733948.000000000000000018.0000000000000000127834"1018""18963"5.0196078431372544.64406779661029.000000000000000019.0000000000000000127834"1018""18963"3.724832214765153.15972222222227.0000000000000000110.0000000000000000127834 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:40 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokЩукина Анна, Если вы имеете в виду сделать так Код: sql 1. 2. то я это по пробовал в первую очередь, результаты возвращает не то что мне надо.вам, скорее всего, нужна была функция DENSE_RANK() OVER(), а не COUNT() OVER() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:45 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, По пробовал все методы, правильно работает только мой. Или я что-то не так делаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. nskv nskvz gid zak Splus Sminus a b c e"1018""14096"2.3529411764705955.64935064935071101111"1018""14096"3.0967741935483923.38762214983711002222"1018""14096"3.5389610389610428.8666666666667813333"1018""14096"3.5598705501618133.7218045112782444444"1018""14096"3.6774193548387132.8155339805825435555"1018""14096"3.701298701298743.7423312883436336666"1018""14096"3.7096774193548428.1623931623932507777"1018""14096"3.724832214765145.0694444444444228888"1018""14096"3.7333333333333358.7155963302752039999"1018""14096"5.0196078431372532.62295081967211110101010"1018""14096"5.129.51456310679611011111111"1018""14096"5.225806451612945.48245614035090012121212"1018""18963"2.3529411764705938.159509202454461111"1018""18963"3.0967741935483955.5048859934853092222 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 14:01 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
В этом примере тоже видно, что он работает не так, как мне надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 14:04 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok, там выше еще были магические слова ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. но имхо профита тут от оконных функций на такой мелкой таблице будет немного. и кстати я предлагал сделать один индекс по (nskv, nskvZ), а раздельные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 14:35 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok В этом примере тоже видно, что он работает не так, как мне надо. Hm вы меня заинтересовали. Через полчасика попробую понять решается это через window functions или нет. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 14:37 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokдапочему бы не сократить время получения результата отказавшись от переливания в промежуточную таблицу? Что же касаемо условия строго меньше на два поля, то оно выглядит странно - не соответствует последовательному ранжированию order by и вероятно ошибочно. Кроме того, не понятно, нужно ли ранжирование rows или range, которое неприменимо для двух полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 15:10 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipokЩукина Анна, 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. -- кактотак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 15:42 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
vadipok В этом примере тоже видно, что он работает не так, как мне надо. В общем решение задачи через window functions сводится к придумыванию такой order by конструкции которая бы соответствовала сортировке по t.rankGid < t1.rankGid AND t.rankZak < t1.rankZak Забавно вроде и простая задача но в лоб пока не решается. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 15:47 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukvadipok В этом примере тоже видно, что он работает не так, как мне надо. В общем решение задачи через window functions сводится к придумыванию такой order by конструкции которая бы соответствовала сортировке по t.rankGid < t1.rankGid AND t.rankZak < t1.rankZak Забавно вроде и простая задача но в лоб пока не решается. -- Maxim Boguk www.postgresql-consulting.ru Боюсь вы его не решите, по той простой причине, что там не считаются ранги, а СЧИТАЮТСЯ ЗНАЧЕНИЯ которые находятся НИЖЕ, и которые в первым случае БОЛЬШЕ, а во втором МЕНЬШЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 15:58 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
Увы... не решается задача через 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:00 |
|
||
|
Помогите с поризводительностью запроса.
|
|||
|---|---|---|---|
|
#18+
p2.vadipokдапочему бы не сократить время получения результата отказавшись от переливания в промежуточную таблицу? Что же касаемо условия строго меньше на два поля, то оно выглядит странно - не соответствует последовательному ранжированию order by и вероятно ошибочно. Кроме того, не понятно, нужно ли ранжирование rows или range, которое неприменимо для двух полей. Если будут ошибки, то их же еще править надо. Боюсь потом будет не читабельно, и так слишком сложно получается: Код: 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=109&tid=1997941]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 380ms |

| 0 / 0 |
