Skip to content

Пейджинг данных в T-SQL

Пересказ статьи Greg Larsen. Paging Data in T-SQL


Иногда при работе с очень большими наборами данных вы не захотите получить сразу все данные. В предыдущей статье я рассматривал использование предложение TOP , которое позволяет получить только указанное число строк от начала результирующего набора запроса. Однако если вы захотите просмотреть строки, следующие за этим набором, пейджинг данных позволит вам продолжить прокручивать данные из набора по одной странице за раз. Т.е. вы могли захотеть вывести первые 100 строк, затем другие 100, затем оставшиеся строки и т.д.

В этой статье мы покажем, как выполнить пейджинг по результирующему набору с помощью опций OFFSET и FETCH в предложении ORDER BY. Продолжить чтение "Пейджинг данных в T-SQL"
Категории: T-SQL

Приостановка и возобновление создания ограничений таблицы в SQL Server 2022

Пересказ статьи Daniel Calbimonte. SQL Server 2022 Pause and Resume Creation of Table Constraints


В SQL Server 2022 появилась новая функция, которая позволяет приостанавливать и возобновлять создание ограничений первичного ключа (primary key) и уникальности (unique) для таблицы. В этой статье рассматривается использование этой новой функции.

Для небольших таблиц добавление ограничения может происходить быстро, но для больших таблиц этот процесс может быть значительно более долгим, иногда часами, и потреблять много ресурсов. В предыдущих версиях, если вы хотели приостановить процесс из-за проблем с ресурсами, такой возможности не было. Единственным вариантом было остановить создание и начать его заново. Теперь в SQL Server 2022 при добавлении ограничения вы можете поставить процесс на паузу, а потом возобновить его. Продолжить чтение "Приостановка и возобновление создания ограничений таблицы в SQL Server 2022"
Категории: T-SQL

Используйте триггеры DDL для автоматической синхронизации представлений SQL Server

Пересказ статьи Aaron Bertrand. Use DDL Triggers to Automatically Keep SQL Server Views in Sync


Сколько бы мы ни говорили людям использовать SCHEMABINDING и избегать использования SELECT *, все же существует множество причин, почему этому не следуют. Хорошо задокументированная проблема с SELECT * в представлениях состоит, в частности, в том, что система кэширует метаданные представления в момент создания представления, а не тогда, когда к представлению выполняется запрос. Если позже таблицы, к которым обращается представление, изменяются, схема представления не отражает эти изменения без обновления, изменения или пересоздания представления. Разве не было бы замечательно, если бы вы могли перестать беспокоиться об этом сценарии и позволили системе автоматически синхронизировать метаданные?
Продолжить чтение "Используйте триггеры DDL для автоматической синхронизации представлений SQL Server"
Категории: T-SQL

Распространенные мифы о журналах транзакций SQL Server

Пересказ статьи Jeff Iannucci. Common SQL Server Transaction Log Myths


SQL Server является сложным программным обеспечением, поэтому не удивительно, что некоторые из нас имеют заблуждения относительно того, чем является журнал транзакций и что он делает. Эта публикация имеет целью не просто рассказать вам об этих мифах, но и показать некоторые способы доказательства (вернее, опровержения) некоторых из наиболее стойких заблуждений, которых придерживаются некоторые из нас.

И, пожалуйста, не огорчайтесь, если вы еще верите в некоторые из этих мифов. Просто прекратите верить им после чтения этой статьи. Серьезно, никогда не поздно учиться или, как в нашем случае, переучиваться. ОК, вот правда.
Продолжить чтение "Распространенные мифы о журналах транзакций SQL Server"
Категории: T-SQL

Использование предложения TOP в операторе SELECT

Пересказ статьи Greg Larsen. Using TOP clause in a SELECT statement


Иногда вам может потребовать вернуть только несколько строк из результирующего набора, а не все строки. Это может быть полезно, если вы хотите просто проверить критерий отбора на нескольких строках данных. Какой бы ни была причина, предложение TOP может быть полезно для возвращения конкретного числа или процента строк из результирующего набора. В этой статье будет рассмотрено использование предложения TOP в операторе SELECT, и как он может использоваться для возвращения частичного набора записей.
Продолжить чтение "Использование предложения TOP в операторе SELECT"
Категории: T-SQL

Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1

Пересказ статьи Andrea Gnemmi. Privileges and Roles in SQL Server, Oracle and PostgreSQL - Part 1


Предоставление привилегий на объект базы данных является наиболее распространенным видом деятельности, которую выполняют администраторы баз данных, стараясь при этом дать разрешения, достаточные для выполнения работы, но не слишком большой доступ. Помните о принципе наименьших привилегий! Иногда это сложно реализовать, и, как мы видели на многих других примерах, имеются некоторые различия в реализации этой функциональности в трех рассматриваемых РСУБД, плюс появились некоторые новые роли в SQL Server 2022. В настоящей статье мы рассмотрим то, как предоставить разрешения в SQL Server, Oracle и PostgreSQL.

В этом руководстве мы дадим обзор различных способов предоставления привилегий в SQL Server, Oracle и PostgreSQL. Будут также представлены различия в концепциях ролей, схем и владельцев, а также способ предоставления разрешений на всю схему. Работая над этой статьей, я осознал, что она становится все больше и больше, поэтому я разбил ее на 2 части. В этой первой части мы сосредоточим внимание на концепции ролей. Продолжить чтение "Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1"

Экономьте время на подсчете, используйте IF EXISTS

Пересказ статьи Chad Callihan. Save Time Counting, Use IF EXISTS


При проверке существования значения или значений в таблице обычно не обязательно читать всю таблицу. Цель состоит в том, чтобы получить больше верных или ложных ответов, независимо от того, соблюдаются критерии или нет. Если критерии выполняются на первых нескольких записях, то нет необходимости продолжать чтение. Тем не менее, вы можете встретить скрипты, написанные с необязательным извлечением полного числа значений в таблице. Давайте сравним разницу в производительности между использованием COUNT(*) и “IF EXISTS” при проверке наличия значений.

Продолжить чтение "Экономьте время на подсчете, используйте IF EXISTS"

Удалить сразу все избыточные индексы в каждой базе данных

Пересказ статьи Eitan Blumin. Drop All Redundant Indexes In Every Database All At Once


Избыточные индексы в SQL Server - это явление значительно более общее, чем мне бы хотелось. Я встречал это довольно часто. Это означает, что данное сообщение в блоге все еще будет иметь значительную целевую аудиторию! :-)

Статья Brent Ozar дает исчерпывающую информацию об избыточных/дублирующих индексах, что они означают, почему это плохо, и что нужно с этим делать.

Продолжить чтение "Удалить сразу все избыточные индексы в каждой базе данных"

Сравнение функций STUFF, REPLACE и WRITE в SQL Server

Пересказ статьи Aubrey Love. SQL STUFF vs SQL REPLACE vs SQL WRITE in SQL Server


Если вы когда-либо решали задачу со строками в Microsoft SQL Server, то, вероятно, уже знакомы с различными строковыми функциями, которые могут упростить процесс решения. Функции STUFF() и REPLACE() наиболее часто используются для обновления строковых значений в таблице. Но .WRITE() является относительно менее известной, не так ли? Продолжить чтение "Сравнение функций STUFF, REPLACE и WRITE в SQL Server"
Категории: T-SQL

Решение проблем производительности при использовании UDF в SQL Server

Пересказ статьи Eric Blinn. Performance Problems and Solutions when using User Defined Functions in SQL Server


Может ли определяемая пользователем функция (UDF) являться причиной проблем с производительностью в SQL Server? Как это выяснить? Если это может быть частью проблемы, то что тут можно сделать?

UDF могут быть очень привлекательны для новых разработчиков T-SQL, особенно для тех, кто пришел с опытом в более традиционных процедурных языках программирования. Эти функции позволяют обеспечить более высокую степень повторного использования кода и могут упростить его читабельность. К сожалению, SQL Server использует теоретико-множественную парадигму программирования и зачастую не так хорош при выполнении UDF. Что хуже, многие традиционные методы настройки производительности не точно оценивают влияние UDF на запросы. Здесь мы будем изучать эту проблему и способы ее обхода.
Продолжить чтение "Решение проблем производительности при использовании UDF в SQL Server"

Руководство по функциям json_object и json_array в SQL Server 2022

Пересказ статьи Daniel Calbimonte. json_object and json_array Functions SQL Server 2022 Tutorial


С каждым днем JSON становится все более популярным и используется во многих системах. Есть ли способ построения собственных объектов JSON, используя T-SQL вместо Python?

В SQL Server появилась новая функция, которая называется JSON_OBJECT и служит для конструирования объектов JSON с помощью T-SQL. Кроме того, была добавлена функция JSON_ARRAY для создания массивов в JSON. В этом руководстве будет показано как работать с этим новыми функциями.

Продолжить чтение "Руководство по функциям json_object и json_array в SQL Server 2022"
Категории: T-SQL

Что вызывает мою скалярную функцию T-SQL (миллион раз)?

Пересказ статьи Matthew McGiffen. What is calling my T-SQL scalar function (millions of times)?


Здесь рассматривается метод, использующий расширенные события (XE) для идентификации родительских объектов, которые вызывают заданную функцию SQL и насколько часто.

Я работал в команде, когда выяснилось, что определенная функция выполнялась миллиарды раз на дню и - хотя одно выполнение почти не потребляло ресурсов - в целом это вызывало значительное использование CPU на сервере. Мы обсуждали способ улучшения ситуации, но это требовало изменения кода, который ее вызывал. Проблема заключалась в том, что эта функция использовалась примерно в 700 различных мест по всему коду базы данных - как в хранимых процедурах, так и в представлениях - хотя на сами представления могли затем ссылаться другие хранимые процедуры. Вместо того, чтобы обновлять весь код, разработчики хотели бы сначала выявить объекты, которые чаще всего выполняют эту функцию.
Продолжить чтение "Что вызывает мою скалярную функцию T-SQL (миллион раз)?"
Категории: T-SQL

Примеры функций SQL Server для работы с файлами JSON

Пересказ статьи Rick Dobson. SQL Server Function Examples with JSON Files


Заметна растущая популярность контента JSON для обмена данными в интернете, а также для легкого способа хранения журналов и данных измерений. В то же время растет функциональность SQL Server в плане поддержки, хранения и обработки данных JSON. Возникла необходимость дать несколько примеров функций SQL Server, которые иллюстрируют поддержку, хранение и обработку файлов с JSON-контентом. Продолжить чтение "Примеры функций SQL Server для работы с файлами JSON"
Категории: T-SQL

Покрывающие индексы SQL Server с ключевыми и неключевыми столбцами для повышения производительности

Пересказ статьи Jared Westover. SQL Server Indexes with Key and Non-Key Columns as Covering Indexes to improve Performance


Когда я начинал создавать индексы в SQL Server, я добавлял столбцы только в ключ. Даже если зеленая полезная подсказка предлагала обратное. Это было так давно, что я уже не помню, где я впервые прочитал о размещении столбцов во включенной или неключевой части. Однако как-то я приспособился. Почему вы должны размещать столбцы в ключе, а не в ключевой области при создании индекса? Имеет ли это значение? Вот несколько вопросов, которые мы исследуем вместе с вами.


В этом руководстве я начну с определения понятия покрывающего индекса в SQL Server. Затем мы рассмотрим, как SQL Server хранит неключевые столбцы в структуре индекса. Мы узнаем о двух главных преимуществах добавления столбцов во включенную часть индекса. Это не все преимущества, но с этими двумя имеют дело наиболее часто. К концу руководства вы сможете уже сейчас начать создавать лучшие индексы.


Продолжить чтение "Покрывающие индексы SQL Server с ключевыми и неключевыми столбцами для повышения производительности"

Восстановление на момент времени в SQL Server

Пересказ статьи Greg Robidoux. SQL Server point in time recovery


В какой-то момент вредоносная команда может быть выполнена на одной из ваших баз данных, и вам потребуется восстановить потерянные данные. Имеется несколько вариантов действий, которые могут восстановить потерянные данные, но какой из них сделает это лучшим образом? Одним из вариантов, которые предлагает SQL Server, является возможность восстановление ваших данных на заданный момент времени, для того чтобы восстановить вашу базу к состоянию, непосредственно предшествовавшему выполнению вредоносной команды. Итак, какие шаги следует предпринять для восстановления на момент времени? Продолжить чтение "Восстановление на момент времени в SQL Server"
Категории: T-SQL