TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.7K subscribers
Post #2599 1.45K
По умолчанию Postgres считает столбцы, которые вместе используются в 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 строки — гораздо ближе к реальному результату.

👉 Java Portal
  • 👍 5
  • ❤ 2
More from @java_iibrary
  1. Sep 20, 2026Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого r…
  2. Sep 20, 2026Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG» Образовательная прогр…
  3. Sep 20, 2026💡 Java: сортируйте с помощью Comparator.comparing() и забудьте про громоздкий compare() ✅…
  4. Sep 19, 202699% Java-разработчиков хотя бы раз допускали эту ошибку. Всё работает... пока однажды не п…
  5. Sep 19, 2026💡 Java: форматируйте код одинаково каждый раз ✅ Выберите единый code style и придерживайт…
  6. Sep 18, 2026Большинство разработчиков знают базовую цепочку: git add → git commit → git push Но Git в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →