SQL Server: тест производительности и пакетная обработка. Продолжение
В трех других решениях (Решение 2, 3 и 4) улучшения при использовании пакетной обработки еще более заметны по сравнению с первоначальными планами построчного режима. Это связано с использованием новых операторов агрегированного значения окна и сортировки в пакетном режиме, эффективность которых намного выше, чем у аналогов в построчном режиме.
Новый план для Решения 2 с пакетной обработкой показан на рисунке выше.
Это решение было выполнено за 2,748 секунды на моем компьютере, по сравнению с 24 секундами для первоначального плана в построчном режиме.
План для Решения 3 с пакетной обработкой показан на рисунке выше. Это решение было выполнено за 2,934 секунды на моем компьютере, по сравнению с 24 секундами для первоначального плана в построчном режиме.
План для Решения 4 с пакетной обработкой показан на рисунке выше. Это решение было выполнено за 2,332 секунды на моем компьютере, по сравнению с 15 секундами для первоначального плана в построчном режиме.
Итак, в версии SQL Server 2017 CTP2 отсутствует поддержка оконных агрегатных вычислений с ключевым словом DISTINCT со стороны Т-SQL. В этой статье мы рассмотрели четыре обходных приема: использование объединения и группирования, номеров строк, плотности диапазона и максимума и применение возрастающих и убывающих «плотных» рангов. Первый метод оказался более эффективным даже при использовании пакетной обработки, но все решения в пакетном режиме выполнялись довольно быстро, в течение 2—3 секунд. Поэтому в случае пакетной обработки вы можете по-прежнему пользоваться привычным решением, не беспокоясь о производительности. Сомневаетесь в полученных результатах - тогда закажите курсовую работу по данной теме на vbaze.com.ua, чтобы убедиться в их точности.
Если вы считаете, что встроенная поддержка оконных агрегатных вычислений с ключевым словом DISTINCT более эффективна, нежели применение обходных приемов, проголосуйте за эту функцию по адресу: https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-distinct-clause-for-aggregate-functions.