Пересказ статьи Lorenzo Uriel. Everything you Need to Know About Index in SQL Server
Цель настоящей статьи - рассказать просто об индексах в SQL Server, объяснив фундаментальные понятия и предложив практические советы по обслуживанию.
Я обязуюсь обеспечить легкое и быстрое чтение, упрощающее понимание этого важного аспекта в области баз данных и управлении запросами.
Темы
- Обзор индексов
- Типы индексов в SQL Server
- Кластеризованные индексы.
- Некластеризованные индексы.
- Поколоночный и построчный индексы.
- Фрагментация индексов
- Внутренняя и внешняя.
- Перестройка и реорганизация.
Continue reading "Все, что вам нужно знать об индексе в SQL Server"
Пересказ статьи Steve Jones. Friday Flyway Tips – Inserting Column in the Middle of a Table
Заказчик мне задал вопрос, может ли Flyway Desktop (FWD) вызвать проблемы, если разработчики добавили столбцы в середину таблицы. Это обоснованное беспокойство, и данная статья показывает, что FWD не вызывает проблем, даже если ваши разработчики глупят.
Если только они не захотят это сделать специально.
Я много работал с Flyway Desktop с тех пор, как мы перешли с устаревших плагинов для SSMS на автономный инструмент.
Сценарий
Представим, что у вас есть подобная таблица с несколькими столбцами.
CREATE TABLE Product
( ProductID INT NOT NULL CONSTRAINT ProductPK PRIMARY KEY
, ProductName VARCHAR(50)
, ProductDesc VARCHAR(1000)
, ProductSize CHAR(1)
, ProductWeight INT
, ProductColor VARCHAR(20)
, StatusID int
)
GO
Эта таблица имеет одинаковую структуру на сервере разработки и на продакшене, и мне нужно добавить новый столбец. Нам необходимо знать количество в упаковке, поскольку у новых товаров в коробке содержится несколько штук, так что необходимо добавить в таблицу столбец ProductQtyPerUnit.
Continue reading "Вставка столбца в середину таблицы"
Пересказ статьи Andy Brownsword. Comparing Performance of TOP vs. MAX
Как TOP(1), так и MAX могут использоваться для нахождения наибольшего значения в наборе данных. Хотя они приводят к одному и тому же результату, но делают это разными способами.
Для начала разберемся, в чем разница между ними?
Предложение TOP ограничивает число результатов, возвращаемых запросом; тут мы рассматриваем единственный результат. При использовании MAX, напротив, мы применяем функцию к нашим данным, чтобы выбрать из них максимальное значение.
Давайте перейдем к нескольким примерам с данными StackOverflow, а конкретно таблицы Votes.
Continue reading "Сравнение производительности TOP и MAX"
Пересказ статьи Rich Benner. SQL Server Antipatterns: Common Mistakes with SQL Code
В современном технически насыщенном мире от разработчиков требуется широкий диапазон навыков и языков программирования. Язык SQL обычно является одним из них. Это гарантирует, что в команде возможна взаимная поддержка на ежедневной основе, но это также может приводить к ошибкам в коде SQL.
Одной из потенциальных проблем здесь является нехватка времени для того, чтобы действительно глубоко вникать в каждый язык программирования, имеющийся в вашем арсенале. Что касается SQL Server, то язык, который там используется, весьма отличается от, скажем, C#. Эти языки основаны на обработке в итерационном процессе каждой строки отдельно в наборе данных. Это достаточно хорошо работает в подобных языках, но совершенно ужасно в SQL Server. Будучи языком, основанном на теории множеств, SQL Server предпочитает иметь дело сразу со всем множеством данных.
Continue reading "Антипаттерны SQL Server: характерные ошибки кода SQL"
Пересказ статьи Andy Brownsword. A Bit About Trivial Plans
Тривиальный план создается, когда у SQL Server нет никакого выбора по реализации. Вот пример из базы данных StackOverflow с удаленными индексами:
SELECT *
FROM dbo.Users
WHERE Id = 1234;
Здесь действительно нет никакого выбора помимо поиска в кластеризованном индексе. Это единственный индекс и это настолько же эффективно, насколько это возможно, учитывая, что мы фильтруем по ключу кластеризации для конкретного значения:
Continue reading "Немного о тривиальных планах"