Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

5.7. Создание индексов

В базах данных для ускорения поиска информации в таблицах применяются специальные структуры - индексы. При отсутствии индексов сканирование записей таблицы осуществляется последовательно в порядке их физического размещения. Наличие индексов предполагает, что анализ записей производится в соответствие с возрастанием/убыванием значений полей, из которых сформирован индекс таблицы. Пользователи могут создать индексы, состоящие из любого числа полей таблицы в различных их сочетаниях. Формировать индексы таблицы имеют право:

  • владелец таблицы;
  • пользователи, которые имеют привилегию REFERENCES (см. табл. 7) работы с таблицей;
  • пользователи с классом полномочий DBA (см.п. 5.2).

Некоторые индексы создаются автоматически. Такие индексы формируются при определении первичных ключей и совокупностей полей с признаками уникальности.

Рассмотрим пример создания индексов. Одним из запросов администратора базы данных является выдача списка книг требуемого издательства, начиная с последних поступлений (см.приложение). Для сокращения времени его выполнения необходимо создать в таблице Books индекс по возрастанию значений поля Publisher и убыванию значений поля Start_date. Назовем этот индекс Publ_Start_date. Формирование индекса следует начать с установления в утилите SQL Central соединение с базой данных Dubl_Biblia. Затем необходимо запустить мастер Add index, который вложен в папки Tables - Books - Indexes. Этот мастер предлагает выполнить ряд шагов. Каждый шаг представляется в виде отдельного окна. Работу мастера Add index рассмотрим по ранее применявшейся схеме (см. п. 5.1) с разъяснением выполнения последовательности шагов, с анализом каждого шага.

Шаг 1. Начальная стадия создание индекса таблицы данных (рис. 58).

Рис. 58. Создание индекса таблицы данных

Пояснение. Добро пожаловать в Мастер создания индексов. Этот Мастер позволяет вам создать новый индекс таблицы данных.

Индексы, формируемые пользователями СУБД SQL Anywhere, предназначены для сокращения времени поиска данных.

Вопрос. Какое имя вы хотите дать новому индексу?

Ниже следует поле, в которое следует ввести имя создаваемого индекса. В нашем случае - это Publ_Start_date. После заполнения поля окна щелкните мышью по кнопке Далее для выполнения следующего шага.

Шаг 2. Определение условия формирования индекса (рис. 59).

Рис. 59. Определение условия формирования индекса

Вопрос. Какие поля будут использоваться при формирования индекса?

В приведенном ниже списке полей таблицы необходимо выделить одно из полей щелкнуть мышью по одной из кнопок.

Кнопка Add ASC позволяет включить в условие формирования индекса использование значений выделенного поля по возрастанию. Сделанный выбор отображается в окне Curent index. В случае необходимости использования значений выделенного поля по убыванию следует "нажать" на кнопку Add DESC. Кнопка Remove предназначена для исключения из индекса значений выделенного поля. Если требуется исключить из индекса все поля, воспользуйтесь кнопкой Remove All. Просмотреть свойства выделенного поля позволяет кнопка Details.

На рис. 59 представлен результат выделения поля Publisher с последующим использованием кнопки Add ASC и выбора поля Start_date "иажатия" кнопки Add DESC. В результате этого будет сформирован индекс по возрастанию названий издательств (поле Publisher). В пределах одного издательства даты поступления книг в библиотеку будут отсортированы по убыванию.

После задания условия формирования индекса переходим к следующему шагу при помощи кнопки Далее.

Шаг 3. Выбор области базы данных (см.п. 1) для хранения индекса (рис. 60).

Рис. 60. Выбор области базы данных для хранения индекса

Пояснение 1. Вы можете сохранить индекс в области базы данных отличной от той, где размещена таблица данных.

Вопрос 1. В какой области базы данных следует сохранить индекс?

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

Пояснение 2. Формирование уникального индекса гарантирует, что в таблице не будет храниться двух записей с одинаковыми значениями полей, используемых при формировании индекса.

Вопрос 2. Вы хотите, чтобы индекс был уникальным?

Для ответа на этот вопрос предназначен флажок The index will be unique. В нашем случае это флажок должен находиться в сброшенном состоянии. Дело в том, что в один и тот же день в библиотеку могут поступить несколько книг одного издательства. По этой причине уникальность совокупности полей Publisher и Start_date не допустима.

Теперь следует "нажать" кнопку Далее для подтверждения готовности к созданию нового индекса.

Шаг 4. Подтверждение готовности к созданию нового индекса (рис. 61).

Рис. 61. Подтверждение готовности к созданию нового индекса

Пояснение 1. Вы можете включить комментарий для нового индекса.

Ниже располагается поле для ввода комментария для создаваемого индекса.

Пояснение 2. Новый индекс Publ_Start_date будет сформирован по возрастанию значений поля Publisher и убыванию значений поля Start_date. Щелкните по кнопке Готово для завершения формирования индекса.

Все действия, выполненные до сих пор в мастере Add index, были предназначены для определения параметров SQL-оператора CREATE INDEX. После щелчка мышью по кнопке Aioiai начнется выполнение этого оператора. Его результатом будет появление индекса Publ_Start_date. Данный факт выражается в появлении одноименного элемента в папке Indexes. (см. рис. 62).

Рис. 62. Обновленное содержание папки Indexes

    ПРИМЕЧАНИЕ

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

Для создания такого индекса Publ_Start_date в утилите ISQL требуется выполнить следующие SQL-операторы:

// Создание нового индекса
CREATE INDEX Publ_Start_date 
ON Stepanov.Books 
("Publisher"  /* ASC */,
 Start_date DESC)
// IN SYSTEM; // при необходимости указывается
 //область базы данных, где будет размещен индекс/
// Комментарий к индексу
COMMENT ON INDEX 
Stepanov.Publ_Start_date 
is ' Составной индекс по полям Publisher 
и Start_date для ускорения выполнения 
запросов, использующих в качестве 
ключей поиска название издательства
и дату поступления книг в  библиотеку '

По умолчанию индексы формируются по возрастанию в той же области данных, где размешена таблица данных.

Для того, чтобы в ISQL убедиться в появлении нового индекса требуется проанализировать системное представление SYS.SYSINDEXES.

Индексы удаляются из базы данных только при явном указания об этом. В SQL Central для выполнения этого действия достаточно выделить требуемый индекс и нажать клавишу Del. В ISQL для удаления индекса необходимо выполнить оператор вида:

// Удаление индекса
DROP INDEX Publ_Start_date

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

СУБД SYBASE SQL Anywhere позволяет формировать одиночные и составные индексы с указанием индивидуального порядка использования значений выбранных полей (по возрастанию/убыванию). Это позволяет создавать сложные индексы, способные удовлетворить в большинстве случаев требования пользователей.

Назад | Содержание | Вперед

 

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...