
- •1Общие положения
- •1.1Рекомендуемая литература
- •1.1.1Основная литература
- •1.1.2Дополнительная литература
- •1.2Учебно-материальное обеспечение
- •2.2.2Основные обязанности администратора баз данных sql Server — до 30 мин.
- •2.2.3Документирование — до 15 мин.
- •2.2.4Планирование — до 15 мин.
- •2.2.5Прочие обязанности администратора баз данных — до 10 мин.
- •2.2.6Методы работы и полезные советы администратору баз данных — до 15 мин.
- •3.2.2Инсталляция Microsoft sql Server — до 30 мин.
- •3.2.3Службы sql Server — до 30 мин.
- •3.2.4Применение sql Server Enterprise Manager — до 15 мин.
- •4.2.2Группы файлов — до 20 мин.
- •4.2.3Автоматический рост файлов — до 10 мин.
- •4.2.4Системные базы данных — до 5 мин.
- •4.2.5Создание баз данных — до 25 мин.
- •4.2.6Просмотр баз данных — до 10 мин.
- •4.2.7Удаление баз данных — до 10 мин.
- •5.2.2Индексные ключи — до 5 мин.
- •5.2.3Простые индексы — до 10 мин.
- •5.2.4Составные индексы — до 15 мин.
- •5.2.5Уникальность индекса — до 15 мин.
- •5.2.6Типы индексов — до 25 мин.
5.2.2Индексные ключи — до 5 мин.
Индексным ключом называется колонка или колонки, которые используются для формирования индекса. Индексный ключ – это значение, позволяющее быстро находить строку, содержащую нужные вам данные (подобно статье индекса [алфавитного указателя] в книге, указывающей определенную тему в тексте). Для доступа к данным строки через индекс вы должны включить значение или значения индексного ключа в предложение WHERE нужного оператора SQL. Способ выполнения этого процесса зависит от того, какой это индекс – простой или составной.
5.2.3Простые индексы — до 10 мин.
Простой индекс определяется только по одной колонке таблицы (см. рисунок 5.4). Чтобы индекс использовался оператором SQL, ссылка на эту колонку должна быть включена в предложение WHERE данного оператора.
Рисунок 5.4. Простой индекс
В зависимости от типа сохраняемых данных, количества уникальных элементов в колонке и типа используемых операторов SQL простой индекс может оказаться весьма эффективен. В других случаях необходим составной индекс. Например, если вы строите индекс для адресной книги с тысячами имен и адресов, то колонка state (штат) не слишком подходит для простого индекса, поскольку для каждого штата будет много записей. Однако, добавив к индексу колонки street (улица) и city (город), вы делаете его составным индексом, после чего почти каждая запись становится уникальной. Это может оказаться полезным, если у вас используются запросы поиска строк в соответствии с адресом.
5.2.4Составные индексы — до 15 мин.
Составной индекс – это индекс, определенный более чем по одной колонке (см. рисунок 5.5). Доступ к составному индексу может осуществляться с помощью одного или нескольких индексных ключей. В рамках SQL Server 2000 индекс может содержать до 16 колонок, и колонки ключей могут иметь длину до 900 байтов.
Рисунок 5.5. Составной индекс
Для запросов, включающих составной индекс, вам не требуется помещать все индексные ключи в предложение WHERE оператора SQL, но имеет смысл использовать более одного ключа. Например, если индекс создается по колонкам a, b и c какой-либо таблицы, то доступ к этому индексу можно осуществлять с помощью оператора SELECT, содержащего выражение (a АND b АND c), или (a АND b), или a. Конечно, использование более ограничивающего предложения WHERE, содержащего, например, выражение a АND b АND c, обеспечит более высокую производительность. Скорее всего, из базы данных будет считано меньшее количество строк, поскольку строки будет указаны более точно. Если использовать a АND b или просто a, то будет инициировано сканирование индекса.
Сканирование индекса возникает потому, что критерию поиска соответствует более чем одна запись индекса. При сканировании индекса происходит сканирование узлов внутри индекса для считывание нескольких записей данных. Кроме того, индекс лишь частично соответствует выбранному значению. Например, если индекс создан по колонкам a, b и c, а в запросе указано значение только для колонки a, то будут возвращены все удовлетворяющие этому значению строки для всех значений колонок b и c.
Поскольку колонки, по которым строится индекс, упорядочиваются числовым образом, то оптимизатор запросов SQL Server может определить диапазон индексных страниц, которые могут содержать нужные данные. Если известны начальная и конечная страницы, то будут считаны все страницы, содержащие значения данных, после чего будет выполнено сканирование этих данных для выбора запрошенных данных.
Индекс может быть использован только в том случае, если хотя бы один из индексных ключей указан в предложении WHERE запроса SQL. Если в предложении WHERE запроса для предыдущего примера указано значение только колонки name (имя) или колонки phone number (номер телефона), то индекс использоваться не будет.
В большинстве случаев сканирование индекса будет достаточно эффективным; но если происходит доступ к более чем 20 процентам строк таблицы, то более эффективным является сканирование таблицы, при котором из таблицы считываются все строки. Эффективность запросов, использующих индекс, зависит от того, как вы используете индекс (см. раздел "Использование индексов" далее), а также от степени уникальности индекса.