русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оператор CREATE INDEX


Дата добавления: 2013-12-23; просмотров: 1165; Нарушение авторских прав


Оператор SELECT

Извлекает строки из базы данных и позволяет делать выборку одной или нескольких строк или столбцов из одной или нескольких таблиц. Полный синтаксис инструкции SELECT сложен, однако основные предложения можно вкратце описать следующим образом:

[ WITH <common_table_expression>]

SELECT select_list [ INTO new_table ]

[ FROM table_source ] [ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

Полный синтаксис

SELECT statement ::=

[WITH <common_table_expression> [,...n]]

<query_expression>

[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }

[ ,...n ] ]

[ COMPUTE

{ { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ]

[ BY expression [ ,...n ] ]

]

[ <FOR Clause>]

[ OPTION ( <query_hint> [ ,...n ] ) ]

<query_expression> ::=

{ <query_specification> | ( <query_expression> ) }

[ { UNION [ ALL ] | EXCEPT | INTERSECT }

<query_specification> | ( <query_expression> ) [...n ] ]

<query_specification> ::=

SELECT [ ALL | DISTINCT ]

[TOP expression [PERCENT] [ WITH TIES ] ]

< select_list >

[ INTO new_table ]

[ FROM { <table_source> } [ ,...n ] ]

[ WHERE <search_condition> ]

[ GROUP BY [ ALL ] group_by_expression [ ,...n ]

[ WITH { CUBE | ROLLUP } ]

]

[ HAVING < search_condition > ]

Операториспользуется для создания индекса одного или нескольких столбцов.

Синтаксис

Create Relational Index

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

ON <object> ( column [ ASC | DESC ] [ ,...n ] )

[ INCLUDE ( column_name [ ,...n ] ) ]

[ WITH ( <relational_index_option> [ ,...n ] ) ]



[ ON { partition_scheme_name ( column_name )

| filegroup_name

| default

}

]

[ ; ]

 

<object> ::=

{

[ database_name. [ schema_name ] . | schema_name. ]

table_or_view_name

}

 

<relational_index_option> ::=

{

PAD_INDEX = { ON | OFF }

| FILLFACTOR = fillfactor

| SORT_IN_TEMPDB = { ON | OFF }

| IGNORE_DUP_KEY = { ON | OFF }

| STATISTICS_NORECOMPUTE = { ON | OFF }

| DROP_EXISTING = { ON | OFF }

| ONLINE = { ON | OFF }

| ALLOW_ROW_LOCKS = { ON | OFF }

| ALLOW_PAGE_LOCKS = { ON | OFF }

| MAXDOP = max_degree_of_parallelism

}

 

Create XML Index

CREATE [ PRIMARY ] XML INDEX index_name

ON <object> ( xml_column_name )

[ USING XML INDEX xml_index_name

[ FOR { VALUE | PATH | PROPERTY } ] ]

[ WITH ( <xml_index_option> [ ,...n ] ) ]

[ ; ]

 

<object> ::=

{

[ database_name. [ schema_name ] . | schema_name. ]

table_name

}

 

<xml_index_option> ::=

{

PAD_INDEX = { ON | OFF }

| FILLFACTOR = fillfactor

| SORT_IN_TEMPDB = { ON | OFF }

| STATISTICS_NORECOMPUTE = { ON | OFF }

| DROP_EXISTING = { ON | OFF }

| ALLOW_ROW_LOCKS = { ON | OFF }

| ALLOW_PAGE_LOCKS = { ON | OFF }

| MAXDOP = max_degree_of_parallelism

}

 

 

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

ON <object> ( column_name [ ASC | DESC ] [ ,...n ] )

[ WITH <backward_compatible_index_option> [ ,...n ] ]

[ ON { filegroup_name | "default" } ]

 

<object> ::=

{

[ database_name. [ owner_name ] . | owner_name. ]

table_or_view_name

}

 

<backward_compatible_index_option> ::=

{

PAD_INDEX

| FILLFACTOR = fillfactor

| SORT_IN_TEMPDB

| IGNORE_DUP_KEY

| STATISTICS_NORECOMPUTE

| DROP_EXISTING

}

Аргументы

UNIQUE

Создает уникальный индекс для таблицы или представления. Уникальным является индекс, в котором не может быть двух строк с одним и тем же значением ключа индекса. Кластеризованный индекс представления должен быть уникальным.

Компонент SQL Server 2005 Database Engine не позволяет создать уникальный индекс по столбцам, уже содержащим повторяющиеся значения, даже если параметру IGNORE_DUP_KEY присвоено значение ON. При попытке создания такого индекса компонент Database Engine выдает сообщение об ошибке. Прежде чем создавать уникальный индекс по такому столбцу или столбцам, необходимо удалить все повторяющиеся значения. Столбцы, используемые в уникальном индексе, должны иметь свойство NOT NULL, т. к. при создании индекса значения NULL рассматриваются как повторяющиеся.

CLUSTERED

Создает индекс, в котором логический порядок значений ключа определяет физический порядок соответствующих строк в таблице. На нижнем (конечном) уровне такого индекса хранятся действительные строки данных таблицы. Для таблицы или представления в каждый момент времени может существовать только один кластеризованный индекс. Представление с уникальным кластеризованным индексом называется индексированным. Создание уникального кластеризованного индекса физически материализует представление. Уникальный кластеризованный индекс для представлении должен быть создан до того, как для этого же представления будут определены какие-либо другие индексы. Следует создавать кластеризованные индексы до создания любых некластеризованных. При создании кластеризованного индекса все существующие некластеризованные индексы таблицы перестраиваются.

Если аргумент CLUSTERED не указан, создается некластеризованный индекс.

NONCLUSTERED

Создается индекс, который задает логический порядок таблицы. Логический порядок строк данных в некластеризованном индексе не влияет на их физический порядок. Для каждой таблицы можно создать до 249 некластеризованных индексов, независимо от того, каким образом они создаются: неявно с помощью ограничений PRIMARY KEY и UNIQUE или явно с помощью инструкции CREATE INDEX.

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

index_name

Имя индекса. Имена индексов должны быть уникальными в пределах таблицы или представления, но не базы данных. Имена индексов должны соответствовать правилам для иеднтификаторов. Имена первичных XML-индексов не должны начинаться со следующих символов: #, ##, @ или @@.

column

Столбец или столбцы, на которых основан индекс. Задайте несколько имен столбцов для создания составного индекса по объединенным значениям указанных столбцов. Столбцы, которые должны быть включены в составной индекс, указываются в скобках за аргументом table_or_view_name в порядке сортировки.

В один составной ключ индекса могут входить до 16 столбцов. Все столбцы составного ключа индекса должны находиться в одной таблице или одном и том же представлении. Максимальный общий размер значений составного индекса равен 900 байт. Дополнительные сведения о столбцах переменной длины в составных индексах см. в разделе «Примечания».

Столбцы с типами данных для больших объектов ntext, text, varchar(max),nvarchar(max), varbinary(max), xml или image не могут быть ключевыми столбцами для индекса. Кроме того, определение представления не может включать столбцы типов ntext, text и image, даже если они указаны в инструкции CREATE INDEX.

Можно создавать индексы на столбцах с пользовательским типом данных CLR, если этот тип поддерживает двоичное упорядочение. Можно также создавать индексы на вычисляемых столбцах, определенных как вызовы методов для столбцов с пользовательскими типами данных, если эти методы помечены как детерминированные и не выполняют операции доступа к данным.

[ ASC | DESC ]

Определяет сортировку значений заданного столбца индекса: по возрастанию или по убыванию. По умолчанию, используется аргумент ASC.

INCLUDE ( column [ ,... n ] )

Указывает неключевые столбцы, добавляемые на конечный уровень некластеризованного индекса. Некластеризованный индекс может быть уникальным или неуникальным.

Максимальное количество включенных неключевых столбцов –1023, минимальное – 1.

В списке INCLUDE имена столбцов не могут повторяться и не могут использоваться одновременно как ключевые и неключевые.Допускаются данные всех типов, кроме text, ntext и image. Индекс должен создаваться или перестраиваться в автономном режиме (ONLINE = OFF), если любой из заданных неключевых столбцов имеет тип данных varchar(max), nvarchar(max) или varbinary(max). Включенными столбцами могут быть детерминированные вычисляемые столбцы — как точные, так и неточные. Вычисляемые столбцы, производные от типов данных image, ntext, text, varchar(max), nvarchar(max), varbinary(max) и xml, могут включаться как неключевые, если типы данных вычисляемых столбцов приемлем для включения. ON partition_scheme_name ( column_name )

Задает схему секционирования, которая определяет файловые группы соответствующие секциям секционированного индекса. Схема секционирования должна быть уже создана в базе данных с помощью инструкции CREATE PARTITION SCHEME или ALTER PARTITION SCHEME. Аргумент column_name задает столбец, по которому будет секционирован индекс. Этот столбец должен соответствовать типу данных, длине и точности аргумента функции секционирования, которую использует схема partition_scheme_name. Аргумент column_name может указывать на столбцы, не входящие в определение индекса. Можно указать любой столбец базовой таблицы, за исключением случая секционирования индекса UNIQUE, когда столбец column_name должен быть выбран из используемых в уникальном ключе. Это ограничение дает возможность компоненту Database Engine проверять уникальность значений ключа только в одной секции.

Если аргумент partition_scheme_name или filegroup не задан и таблица секционирована, индекс помещается в ту же схему секционирования и с тем же столбцом секционирования, что и для базовой таблицы.

Для XML-индекса задать схему секционирования невозможно. Если базовая таблица секционирована, XML-индекс использует ту же схему секционирования, что и таблица.

ON filegroup_name

Создает заданный индекс в указанной файловой группе. Если местоположение не указано и таблица или представление не секционированы, индекс использует ту же файловую группу, что и базовые таблица или представление. Файловая группа уже должна существовать. XML-индексы используют ту же файловую группу, что и таблица.

ON "default"

Создает заданный индекс в файловой группе, используемой по умолчанию.

Слово «default» в этом контексте не является ключевым. Это идентификатор файловой группы, используемой по умолчанию, который должен быть ограничен, как например в выражении ON "default" или ON [default]. Если задано значение «default», параметр QUOTED_IDENTIFIER в текущем сеансе должен иметь значение ON. Это установка по умолчанию.

[PRIMARY] XML

Создает XML-индекс по заданному столбцу типа xml. Если присутствует ключевое слово PRIMARY, создается кластеризованный индекс с ключом, образованным из ключа кластеризации таблицы пользователя и идентификатора XML-узла. Для каждой таблицы можно создать до 249 XML-индексов. При создании XML-индекса помните следующее.

  • Кластеризованный индекс должен существовать для первичного ключа таблицы пользователя.
  • Максимальное количество столбцов в ключе кластеризации таблицы пользователя — 15.
  • У каждого столбца типа xml в таблице может быть один первичный XML-индекс и несколько вторичных.
  • Чтобы создать вторичный XML-индекс для столбца типа xml, первичный XML-индекс для этого столбца уже должен существовать.
  • XML-индекс может быть создан только для одного столбца типа xml. Невозможно создать XML-индекс для столбца, не относящегося к типу xml, а также реляционный индекс для столбца типа xml.
  • Невозможно создать первичный или вторичный XML-индекс для столбца типа xml в представлении для переменной со столбцами типа xml, возвращающей табличное значение, или для переменных типа xml.
  • Невозможно создать первичный XML-индекс для вычисляемого столбца типа xml.
  • Значения параметров SET должны быть теми же, что и для индексированных представлений и индексов вычисляемых столбцов. В частности, параметр ARITHABORT должен быть в значении ON, если создается XML-индекс и если выполняется вставка, удаление или обновление значений в столбце типа xml.

Инструкция CREATE INDEX оптимизируется, как и любой другой запрос. Для уменьшения числа операций ввода-вывода обработчик запросов может вместо таблицы просматривать другой индекс. В некоторых ситуациях можно отказаться от операций сортировки. На многопроцессорных компьютерах с установленным сервером SQL Server 2005 Enterprise Edition инструкция CREATE INDEX, как и другие запросы, может использовать несколько процессоров для операций просмотра и сортировки, связанных с созданием индекса.

 



<== предыдущая лекция | следующая лекция ==>
Оператор DELETE | Хранимая процедура


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.