Индексы против полного сканирования, как определить, что использовать и когда - PullRequest
0 голосов
/ 05 ноября 2019

Есть ли практическое правило, когда следует использовать полное сканирование, а не индексы? Я новичок в оракуле и все еще изо всех сил пытаюсь сосредоточиться на настройке производительности. спасибо!

1 Ответ

2 голосов
/ 05 ноября 2019

Задача оптимизатора - принять эти решения за вас. Конечно, это не всегда будет правильно, но в целом я позволю оптимизатору сделать всю тяжелую работу за меня, и буду беспокоиться только о тех проблемах, когда все пошло не так, и мне пришлось, так сказать, «вмешиваться».

Но с точки зрения полного сканирования по сравнению с индексом я бы посоветовал вам не думать об этом просто потому, что вашему клиенту и, следовательно, вашим приложениям все равно. Клиенты заботятся о времени отклика, поэтому определяющим фактором здесь всегда должно быть время отклика.

Если для запроса 1 полное сканирование на быстрее , чем сканирование индекса, то полное сканированиеэто лучший вариант. Это не делает полное сканирование лучше «всегда» или каким-то «философски» или «технически» лучше, чем сканирование индекса. Это просто означает, что для этого запроса полное сканирование было наилучшим.

Если для другого запроса индекс лучше, то мы обязательно должны использовать индекс.

Обычно в книгах и сообщениях блогов можно увидеть рекомендации: «Ищите ПОЛНЫЙ ДОСТУП К ТАБЛИЦЕ - это плохо» и тому подобное. Это BS по моему мнению. Какой бы план выполнения ни дал вам наилучшую производительность для вашего запроса, он лучший ... независимо от того, использует ли он сканирование индекса, полное сканирование или любую другую форму пути оптимизатора.

Если вы хотитеБолее целостный взгляд на настройку SQL, я написал здесь серию из четырех частей https://connor -mcdonald.com / 2019/10/24 / the-holistic-sql-tuning-series /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...