У меня есть представление, которое управляет авторитетом на уровне записи. Для этого мы будем называть это «AuthorityView». Он работает, просматривая основные таблицы, фактические «данные», таблицу «Управление учетными записями» и таблицу «Группы пользователей».Улучшение производительности просмотров
Для этого примера мы выбираем записи «Сотрудник». Существует таблица ключевых слов «EmployeeData», которая содержит все данные, «EmployeeRecordAuthority», которая определяет, какие группы пользователей имеют доступ к данным (чтение, чтение/запись, обновление, удаление и т. Д.) И «Группы пользователей», просто хранит, к каким группам принадлежат пользователи.
В представлении используется соединение, которое довольно просто, но обрабатывает множество записей (~ 100 тыс. Записей сотрудников и записи записей авторитета ~ 3 м). Конечным результатом является подмножество записей, которые пользователь может просмотреть.
Проблема, с которой я сталкиваюсь, заключается в том, что запрос к представлению без критериев очень медленный. Выполнение «select * from EmployeeAuthorityView» занимает около 6-7 минут, однако применение «вершины» к нему заставляет его выполнять так, как ожидалось. «Выбрать топ 10000000 * из EmployeeAuthorityView» занимает всего несколько секунд.
Все соответствующие индексы существуют между таблицами и были перестроены.
Что может вызвать замедление в запросе? Почему быстрее запрашивается заданный «верхний» предел, хотя количество данных намного больше, чем количество записей в таблице?
Заранее спасибо.
Будет ли это Oracle, MySQL, SQL Server или другие РСУБД? –