|
План выполнения не учитывает UNIQUE CONSTRAINT.
|
|||
---|---|---|---|
#18+
Проверялось для версии PostgreSQL 10.10. В таблице t по паре колонок (id, itemnumber) определил UNIQUE CONSTRAINT. Выполняю select * from t where t.Id = $1 and t.ItemNumber = $2; План выполнения показывает, что будет выбрано 6 записей. После ANALYZE VERBOSE t; На среде для разработки, где в таблице небольшое количество записей, просканировались все страницы таблицы и повторно построенный план выполнения дал ожидаемый результат: rows=1 На тестовой среде просканировались около 20% страниц таблицы и повторно построенный план выполнения дал оценку: rows=5 То есть оптимизатор никак не учитывает наличие UNIQUE CONSTRAINT на таблице. Но всё равно непонятно откуда взялась оценка в 5/6 записей. Гуру, подскажите ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 11:25 |
|
План выполнения не учитывает UNIQUE CONSTRAINT.
|
|||
---|---|---|---|
#18+
Kr_Yury Проверялось для версии PostgreSQL 10.10. В таблице t по паре колонок (id, itemnumber) определил UNIQUE CONSTRAINT. Выполняю select * from t where t.Id = $1 and t.ItemNumber = $2; План выполнения показывает, что будет выбрано 6 записей. После ANALYZE VERBOSE t; На среде для разработки, где в таблице небольшое количество записей, просканировались все страницы таблицы и повторно построенный план выполнения дал ожидаемый результат: rows=1 На тестовой среде просканировались около 20% страниц таблицы и повторно построенный план выполнения дал оценку: rows=5 То есть оптимизатор никак не учитывает наличие UNIQUE CONSTRAINT на таблице. Но всё равно непонятно откуда взялась оценка в 5/6 записей. Гуру, подскажите 1)никак не учитывает наличие UNIQUE CONSTRAINT на таблице. да не учитывает а учитывает только статистику... 2)Но всё равно непонятно откуда взялась оценка в 5/6 записей. Из гистограмм распределения по полям id и ItemNumber... точнее смотрите в pg_stats view особенно на поля most_common_vals и most_common_freqs и n_distinct ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 11:39 |
|
|
start [/forum/topic.php?fid=53&tid=1994882]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 423ms |
0 / 0 |