🔐 Угадайте 3 термина, зашифрованных в эмодзи
Сможете разгадать?
🐸 Библиотека программиста #междусобойчик
Сможете разгадать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔10❤3👍2
🧐 Почему COUNT(*) может быть медленнее, чем COUNT(col)?
Когда мы делаем запросы в базу данных, часто используем COUNT(*), чтобы подсчитать количество строк. Но вот вопрос — почему иногда запрос с COUNT(col) может быть быстрее?
🤔 Вот в чем разница:
- COUNT(*) считает все строки в таблице, включая те, где колонка может быть пустой (NULL). Он не обращает внимания на данные, а просто проверяет, есть ли строка.
– COUNT(col) считает только те строки, где в колонке есть значение (то есть не NULL).
⚡ Почему COUNT(*) может быть медленнее?
– MVCC в PostgreSQL: Это механизм, который помогает работать с транзакциями. Он создает несколько версий строк, чтобы каждая транзакция могла видеть корректные данные. Из-за этого COUNT(*) требует больше вычислений.
– Visibility Map: Это карта, которая помогает базе данных понять, какие строки можно игнорировать при подсчете. Но COUNT(*) проверяет все строки, даже те, которые могут быть невидимы для некоторых транзакций.
🔍 Как ускорить запросы?
Если на колонке есть индекс, то запрос с COUNT(col) может работать быстрее, потому что индекс помогает быстро найти строки с непустыми значениями.
🐸 Библиотека программиста #междусобойчик
Когда мы делаем запросы в базу данных, часто используем COUNT(*), чтобы подсчитать количество строк. Но вот вопрос — почему иногда запрос с COUNT(col) может быть быстрее?
🤔 Вот в чем разница:
- COUNT(*) считает все строки в таблице, включая те, где колонка может быть пустой (NULL). Он не обращает внимания на данные, а просто проверяет, есть ли строка.
– COUNT(col) считает только те строки, где в колонке есть значение (то есть не NULL).
⚡ Почему COUNT(*) может быть медленнее?
– MVCC в PostgreSQL: Это механизм, который помогает работать с транзакциями. Он создает несколько версий строк, чтобы каждая транзакция могла видеть корректные данные. Из-за этого COUNT(*) требует больше вычислений.
– Visibility Map: Это карта, которая помогает базе данных понять, какие строки можно игнорировать при подсчете. Но COUNT(*) проверяет все строки, даже те, которые могут быть невидимы для некоторых транзакций.
🔍 Как ускорить запросы?
Если на колонке есть индекс, то запрос с COUNT(col) может работать быстрее, потому что индекс помогает быстро найти строки с непустыми значениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🌚3❤1