Малоизвестные фичи MS SQL 2012

Базы данных Database  /  Microsoft

Давно не смотрел на новые фичи MS SQL, а за последний месяц узнал несколько. Они далеко не ключевые, но их знание может пригодиться.

Если вы считаете, что:

… читайте дальше.

FORMAT

В MSSQL 2012 подлкючили .NET-овский FORMAT, который теперь доступен из коробки. Это CLR-функция с присущими им ограничениями (нельзя запустить на удалённом сервере), зато “встроенная”.

Набрёл на неё, когда надо было по-быстрому вывести дату в формате “yyyy-MM” и подумалось — “неужели до сих пор всё также неудобно это делать?”. Оказалось, теперь можно писать так:

DECLARE @d DATETIME = GETDATE(); SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' ,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';

Место, резервируемое под VARCHAR(MAX)

Если почитать документацию, то можно узнать интересный факт: под обязательные (NOT NULL) поля VARCHAR(MAX) резервируется 24 байта. Это, конечно, не много. Но и не мало. Так что имейте в виду.

Что касается особенностей хранения строк, об этом можно прочитать много интересного в статье из следующего раздела.

Максимум одна страница на запись? Не совсем…

Теперь ограничение на то, чтобы запись умещалась на странице не такое жёсткое, когда речь идёт о строках. Если вкратце, начиная с SQL Server 2012 можно сделать несколько строковых столбцов (не MAX) суммарной длиной больше 8060 байт и забить их символами под завязку.

При этом некоторые строки будут храниться отдельно (целиком — либо вся строка на странице, либо вся строка вне страницы). Естественно, такая возможность не означает, что её нужно нещадно эксплуатировать — работать будет, всё-таки, медленнее.

А если хочется подробностей, прочитайте статью Microsoft SQL Server 2012 Internals: Special Storage.

Базы данных Database  /  Microsoft