Новость из категории: Информация

SQL Server: сравнение со старыми решениями

Содержание:
1. Новое решение с использованием оконных агрегатов;
2. Сравнение со старыми решениями (Вы читаете данный раздел).
SQL Server: сравнение со старыми решениями

В данной статье я просто представляю данные о производительности, чтобы вы могли сравнить их с новым решением. Помните, что для оптимального функционирования нового решения требуется только один индекс. Старые решения разбивают события начала и завершения, чтобы разделить результирующие строки и организовать их в хронологическом порядке. Поэтому для их оптимальной производительности требуется два вспомогательных индекса: один для событий начала и другой для событий завершения. Используйте следующий программный код для создания рекомендуемых индексов:
CREATE UNIQUE INDEX idx.start ON dbo.Sessions(actid, starttime, sessionid);
CREATE UNIQUE INDEX idx.end ON dbo.Sessions(actid, endtime, sessionid);

SQL Server: сравнение со старыми решениями
Прежнее решение с использованием оконного агрегата и номеров строк

В представленном выше коде приводится одно из старых решений (назовем его старым решением 1). Это решение основано на оконном агрегате для вычисления суммы с нарастающим итогом и номера строк.

SQL Server: сравнение со старыми решениями
План для старого решения с использованием оконного агрегата и номеров строк

Статистика производительности для старого решения 1: время нейтрального процессора = 6047 мс, истекшее время = 6549 мс, число логических операций чтения = 4974. В новом решении используется меньше операций чтения, хотя при этом расходуется больше времени центрального процессора.

SQL Server: сравнение со старыми решениями
План для старого решения с использованием только номеров строк

В листинге 5 приведено другое старое решение (назовем его старым решением 2). Это решение основывается только на номерах строк. План для старого решения 2 показан на рисунке выше.

Статистика производительности для старого решения 2: время центрального процессора = 2719 мс, истекшее время = 3147 мс, число логических операций чтения = 4974. Новое решение немного медленнее и требует больше времени центрального процессора, но в нем используется меньше операций чтения.

Итак, я нашел решение задачи упаковки интервалов, требующее лишь одного вспомогательного индекса и единственного прохода по данным. Любопытно сравнение с прежними решениями. При наличии лишь одного индекса вместо двух новое решение оказывает меньшее негативное влияние на производительность записи и требует меньшего числа операций чтения. Длительность выполнения меньше, чем у старого решения 1 и немного больше, чем у старого решения 2. Эти результаты показывают, сколь полезно повторно обращаться к известным задачам и никогда не считать дело завершенным. Бывает, что удается найти новые решения, улучшающие некоторые характеристики прежних.


Обязательно ознакомитесь с новыми решениями задачи упаковки интервалов в SQL Server, но только после того, как построите на своем загородном участке дом? Тогда вам потребуется Газобетон Стоунлайт (http://greenbud.kiev.ua/gazobeton/gazobloki-stounlajt). Это идеальный материал для малоэтажного строительства, который позволяет возвести в самые сжатые сроки архитектурную конструкцию практически любой сложности. Подробности на greenbud.kiev.ua.

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх