Образовательный портал Claw.ru Всё для учебы, работы и отдыха » Шпаргалки, рефераты, курсовые » Сочинения и изложения » Конспекты и лекции » Энциклопедии
В первую очередь обратим внимание на атрибут
SqlUserDefinedAggregate, который предваряет описание нашего класса. В нем
определено несколько параметров (таблица 5).
Имя параметра
|
Описание
|
Format
|
Формат сериализации
объектов этого класса. Подробности – в следующем разделе.
|
MaxByteSize
|
Максимальный размер
сериализованного объекта. Подробности – в следующем разделе.
|
IsInvariantToDuplicates
|
Зависит ли агрегированное
значение от наличия дубликатов во входных данных (по умолчанию – да). Например, для функции MIN() совершенно неважно, сколько раз повторяются входные
значения, а для функции SUM() – важно. Оптимизатор запросов SQL Server может
использовать эту информацию для минимизации количества вызовов метода
Accumulate.
|
IsInvariantToNulls
|
Влияет ли наличие
NULL-значений во входных данных на агрегированное значение. Для большинства
встроенных агрегирующих функций (кроме COUNT()) это так.
|
IsNullIfEmpty
|
Означает, что агрегирующая
функция возвращает NULL для пустых входных наборов. Например, функция MIN при
выполнении на пустом наборе возвращает как раз NULL , а функция COUNT() – 0.
|
IsInvariantToOrder
|
Данный параметр пока не
документирован; судя по названию, он должен определять, влияет ли на
результат порядок подачи значений в метод Accumulate(). См. примечание после
таблицы
|
Таблица 5.
ПРЕДУПРЕЖДЕНИЕ
Все встроенные агрегирующие функции (а
также наш пример) являются коммутативными, что позволяет серверу выбирать
порядок сканирования входных данных по своему усмотрению. Однако, например, результат функций типа First() или Last(), (которые должны возвращать
соответственно первое или последнее значение в наборе), очевидным образом
зависит от порядка входных значений. Тем не менее, пока непонятно, как можно
использовать подобные функции – дело в том, что синтаксис SQL не позволяет
определять порядок агрегирования записей. Оператор ORDER BY применим только к
выходному набору записей, и использовать в нем можно только те поля, по
которым выполняется группировка. В обычных вложенных запросах (по результатам
которых можно строить запросы с группировкой) применение ORDER BY запрещено.
Скорее всего (это только мое предположение!) разработчики MS SQL Server Yukon
предполагают использовать свойство
SqlUserDefinedAggregateAttribute.IsInvariantToOrder для тех случаев, когда
программист каким-либо способом все же может гарантировать определенное
упорядочивание входных данных – это свойство должно убедить сервер
воздержаться от переупорядочивания записей перед агрегированием. Пока что мне
не удалось обнаружить какого-либо влияния этого свойства на поведение
сервера. Рекомендуем скачать другие рефераты по теме: диплом государственного образца, реферат по экологии.
Предыдущая страница реферата | 11
12
13
14
15
16
17
18
19
20
21 | Следующая страница реферата
|
| |