|
неправильная оценка строк
|
|||
---|---|---|---|
#18+
Привет. имеем вот такой простой запрос Код: plsql 1. 2.
видно что планировщик сильно промазал в оценке кол-ва строк. Далее Код: plsql 1. 2. 3.
Код: plsql 1. 2.
Почти точно. в таблице datas 56k строк в таблице types 15 строк с уникальными "name" Понятно, что в случае с подзапросом, он разделил 56000/15 и получил среднее ожидаемое 3758 строк, но можно ли как то заставить высчитать реальное значение? Пробовал limit ставить, уник. индекс строить...не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2019, 15:32 |
|
неправильная оценка строк
|
|||
---|---|---|---|
#18+
gav21, можно в stable хранимку подзапрос засунуть, чтобы заставить вычислить подставляемое значение typeid на этапе планирования. либо оптимизировать проблемный запрос другими способами (не обязательно вправляя оценку строк в этом месте). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2019, 07:19 |
|
неправильная оценка строк
|
|||
---|---|---|---|
#18+
Alexiusgav21, можно в stable хранимку подзапрос засунуть, чтобы заставить вычислить подставляемое значение typeid на этапе планирования. либо оптимизировать проблемный запрос другими способами (не обязательно вправляя оценку строк в этом месте). Спасибо за совет. Проблема решилась иначе. Если коротко - был запрос с 11 подзапросами во FROM, и оптимизатор строил план на nested loop с такими вот промахами в оценках. Если через set запрещать nested loop, то на hash join все работало хорошо. Позже я вспомнил про параметр from_collapse_limit, увеличение которого чудесным образом вправило мозги оптимизатору и план стал вменяемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2019, 12:53 |
|
|
start [/forum/topic.php?fid=53&msg=39804234&tid=1995236]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 420ms |
0 / 0 |