WHERE, независимыми друг от друга.Например, для такого SQL-запроса:
SELECT *
FROM world
WHERE country = 'Japan'
AND continent = 'Asia';
планировщик оценивает количество подходящих строк, перемножая селективность каждого условия.
Допустим, селективность условия
country = 'Japan' равна 0,02, а continent = 'Asia' — 0,4. Тогда общую селективность планировщик оценит как 0,008.В действительности эти столбцы связаны, поэтому итоговая селективность равна селективности условия
country = 'Japan'.Чтобы исправить оценку, нужно явно указать корреляцию между столбцами: выполнить
CREATE STATISTICS для них вместе, а затем запустить ANALYZE.Я проверил это на тестовом датасете, результаты видны на изображении. Изначально планировщик ожидал, что запрос вернёт 784 строки, хотя фактический результат составлял 2000 строк.
После выполнения
CREATE STATISTICS планировщик спрогнозировал 1983 строки — гораздо ближе к реальному результату.
