информация
Индекс — это объект базы данных, имеющий структуру, оптимизированную для поиска.
Основной единицей хранения информации в SQL сервере является страница.
Основной единицей распределения памяти в базе данных является экстент, равный 64Кб.
Таблица, которая не имеет кластеризованного индекса, называется кучей.
Что бы определить, является ли таблица кучей, нужно выполнить запрос.
Если поле index_id равно 0 и поле type_desc равно HEAP, то эта таблица является кучей.
Основной единицей хранения информации в SQL сервере является страница.
Основной единицей распределения памяти в базе данных является экстент, равный 64Кб.
Таблица, которая не имеет кластеризованного индекса, называется кучей.
Что бы определить, является ли таблица кучей, нужно выполнить запрос.
Если поле index_id равно 0 и поле type_desc равно HEAP, то эта таблица является кучей.
Синтаксис
SELECT * FROM sys.indexes WHERE object_id = (SELECT object_id FROM sys.tables WHERE name = 'имя_таблицы')
Script.sql
--выбор базы USE zzz GO SELECT * FROM sys.indexes WHERE object_id = (SELECT object_id FROM sys.tables WHERE name = 'Book')
--выбор базы USE zzz GO SELECT * FROM sys.indexes WHERE object_id = (SELECT object_id FROM sys.tables WHERE name = 'Book')
Таблица не является кучей.
кластеризованный индекс
При кластеризованном индексе данные в таблице хранятся в отсортированном виде по указанному полю. Если поле имеет первичный ключ (PRIMARY KEY), то кластеризованный индекс уже создан по умолчанию.
При создании кластеризованного индекса, нужно поле сделать уникальным (UNIQUE).
При создании кластеризованного индекса, нужно поле сделать уникальным (UNIQUE).
Синтаксис
--создание кластеризованного индекса CREATE UNIQUE CLUSTERED INDEX имя_индекса ON имя_таблицы(имя_столбца) GO --отключение индекса ALTER INDEX имя_индекса ON имя_таблицы DISABLE GO --включение индекса ALTER INDEX имя_индекса ON имя_таблицы REBUILD GO --удаление индекса DROP INDEX имя_индекса ON имя_таблицы GO
Script.sql
--выбор базы USE zzz GO --создание не кластеризованной таблицы, без PRIMARY KEY CREATE TABLE One( Number INT NOT NULL ) --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет не отсортирован SELECT * FROM One --удаляем данные DELETE FROM One --создание кластеризованного индекса CREATE UNIQUE CLUSTERED INDEX myIndex ON One(Number) GO --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет отсортирован SELECT * FROM One
--выбор базы USE zzz GO --создание не кластеризованной таблицы, без PRIMARY KEY CREATE TABLE One( Number INT NOT NULL ) --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет не отсортирован SELECT * FROM One --удаляем данные DELETE FROM One --создание кластеризованного индекса CREATE UNIQUE CLUSTERED INDEX myIndex ON One(Number) GO --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет отсортирован SELECT * FROM One
не кластеризованный индекс
При некастеризованном индексе данные в таблице хранятся не в отсортированном виде, а индексы, указывающие на эти строки, хранятся в отсортированном виде. Таких индексов может быть несколько.
При создании не кластеризованного индекса, нужно поле сделать уникальным (UNIQUE).
При создании не кластеризованного индекса, нужно поле сделать уникальным (UNIQUE).
Синтаксис
--создание не кластеризованного индекса CREATE UNIQUE NONCLUSTERED INDEX имя_индекса ON имя_таблицы(имя_столбца) GO --отключение индекса ALTER INDEX имя_индекса ON имя_таблицы DISABLE GO --включение индекса ALTER INDEX имя_индекса ON имя_таблицы REBUILD GO --удаление индекса DROP INDEX имя_индекса ON имя_таблицы GO
Script.sql
--выбор базы USE zzz GO --создание не кластеризованной таблицы, без PRIMARY KEY CREATE TABLE One( Number INT NOT NULL ) --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет не отсортирован SELECT * FROM One --удаляем данные DELETE FROM One --создание не кластеризованного индекса CREATE UNIQUE NONCLUSTERED INDEX myIndex ON One(Number) GO --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет отсортирован SELECT * FROM One
--выбор базы USE zzz GO --создание не кластеризованной таблицы, без PRIMARY KEY CREATE TABLE One( Number INT NOT NULL ) --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет не отсортирован SELECT * FROM One --удаляем данные DELETE FROM One --создание не кластеризованного индекса CREATE UNIQUE NONCLUSTERED INDEX myIndex ON One(Number) GO --вставляем данные INSERT INTO One(Number) VALUES (3), (5), (2), (4), (1) --вывод данных будет отсортирован SELECT * FROM One