|
|
|
не оптимальный план - почему так?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Создаем и наполняем таблицу: Код: plsql 1. 2. 3. 4. 5. 6. Смотрим план: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И видим: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. И видим 3 агрегата, по количеству x.cnt. Не понятно, почему подзапрос выполняется не один раз, а по количеству полей, его использующих во внешнем селекте. И как с этим бороться? Версия постгрес 9.1, на 9.3 то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 17:46:41 |
|
||
|
не оптимальный план - почему так?
|
|||
|---|---|---|---|
|
#18+
медведка_креведкаИ как с этим бороться? Вынести скалярный подзапрос с аггрегацией во FROM или в WITH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 18:22:38 |
|
||
|
не оптимальный план - почему так?
|
|||
|---|---|---|---|
|
#18+
медведка_креведкаНе понятно, почему подзапрос выполняется не один раз, а по количеству полей, его использующих во внешнем селекте.Эт как раз таки понятно - оптимизатор раскрыл встроенное представление (внутренний запрос Х) и переписал всю конструкцию таким образом, словно подзапроса "Х" и нет вовсе. Но в этом случае ему ничего не осталось, как выполнить трижды скалярный коррелированный подзапрос в селект-листе получившегося после трансформации запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 19:32:52 |
|
||
|
не оптимальный план - почему так?
|
|||
|---|---|---|---|
|
#18+
медведка_креведка, потому что сначала оптимизатор принидительно раскрывает скобки... это известная особенность оптимизатора postgres... или считайте ваш подзапрос через with или (хак но постоянно используемый) добавьте offset 0: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 02:32:08 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38543303&tid=1998873]: |
0ms |
get settings: |
13ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
107ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 367ms |

| 0 / 0 |
