Назад |
Перейти на главную страницу
Azure SQL - повышение производительности представления и повышение удобства обслуживания
Настройка: я разработчик, который знает, как писать SQL, но не имеет ничего близкого к глубокому знанию SQL, поэтому я не уверен, есть ли лучший способ справиться с моей ситуацией. Первый вопрос, который у меня есть, касается повышения производительности представления, а второй - как структурировать представления для повышения удобства обслуживания.
Проблема:
- Ситуация такова, что у меня есть представление, которое возвращает список инвентаря и текущий статус этого инвентаря в системе. Для этого представления требуется 1 внутреннее объединение, 8 левых внешних объединений и 23 левых объединения (левые объединения обрабатывают фактическое агрегирование данных с помощью функции Sum в связанных таблицах). К этому представлению часто обращаются, и оно регулярно увеличивает использование DTU в моем экземпляре Azure SQL. Иногда он просто полностью истекает. Мой клиент невелик и не может позволить себе высокопроизводительный сервер, и я чувствую, что это такое, что стандартный сервер (S2 или S3) должен относительно легко обрабатывать. Я вношу изменения во внешнем интерфейсе для повышения производительности (запоминание методов доступа, локальное управление состоянием вместо того, чтобы полагаться на эти данные с сервера и т. Д.), Но я хотел посмотреть, есть ли способы, которыми я могу устранить неполадки с производительностью этого запроса инвентаризации . Сканирования таблиц нет, и, глядя на план выполнения, кажется, что большая часть времени уходит на поиск функций по некластеризованному индексу. Есть ли другие вещи, которые я должен искать в плане выполнения, которые, так сказать, будут красными флажками?
- Должен ли я переместить каждое из этих левых объединений в их собственные представления, чтобы сделать их более удобными в обслуживании? По-разному ли обрабатывается SQL (более производительно / эффективно), если каждое из этих левых соединений находится в своем собственном представлении? Будет ли разница, если бы мое представление было хранимой процедурой?
Мы будем очень благодарны за любой совет или помощь. Если это поможет увидеть запрос, я могу отправить его вам напрямую. Однако я не хочу просто выкладывать это на публичный форум.