Имеет ли смысл регулярно собирать статистику по таблице без индексов в базе данных Oracle? Я спрашиваю с оптимистической точки зрения. Я предполагаю, что всегда будет выполняться FULL TABLE SCAN на этой таблице.сбор статистики по таблицам без индексов
ответ
Да, по-прежнему стоит собирать статистику. Информация о количестве и размере строк использования в оптимизатор, даже если нет никаких индексов
В дополнение к тому, что сказал @Dave, собираются и другие данные, такие как количество различных значений (NDV), асимметрия данных (если собираются гистограммы) и высокие/низкие значения. Каждая небольшая помощь, которую вы можете дать оптимизатору, не пропала даром! – Boneist
В двух словах, статистики также важна для оптимизатора, как пища для человека. Если вы долго не едите, ваш мозг будет деградировать в своем функционировании.
Чем больше оптимизатор знает последнюю статистику, тем лучше план выполнения, который он может решить.
Попробую объяснить на примере:
Допустим, вы просили, чтобы достичь конкретного адресата на погожий день. Однако вам не предоставлена информация о карте и местоположении. Теперь может быть N количество способов добраться до места назначения, но без надлежащей информации вы сделаете наихудший возможный путь. Если вы достаточно умны, вы можете запросить указания, теперь вы начинаете собираете статистику. Представьте себе, если бы у вас был весь план, прежде чем вы начнете свое путешествие, то есть если вы сможете собрать всю статистику, вы можете составить лучший план.
UPDATE Видел комментарий о автооптимизатор статистика коллекции.
Да, конечно, есть автоопределение статистики автоопределения в Oracle 11g Release 1
. Пожалуйста, см. Дополнительную информацию here
Если вы используете Oracle 11g или более, то Oracle автоматически будет собирать статистику для вас ... – Ben
В Интернете много информации, поэтому я подумал о том, чтобы объяснить это с помощью примера. См. Мой ответ. –
Даже если нет других вариантов, чем использовать полное сканирование таблицы, это стоит того. Представьте, что вы присоединяетесь к этой таблице с другой таблицей, и вы отправляете результат. Оптимизатор может либо выбрать вложенный цикл, либо хеш-соединение. Но хеш-соединение более эффективно, если вся хэш-таблица вписывается в ОЗУ. И вот статистика. может помочь оценить размер хеш-таблицы. – ibre5041