Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рекомендации по выбору индексов




Индексы ускоряют выборку данных, но приводят к расходу дополнительной памяти (индекс дублирует часть данных основной таблицы) и дополнительным затратам времени при модификации данных (вставка/удаление/модификация записей таблиц требует модификации и сортировки индекса). Выбор системы индексации в базе данных является нетривиальной задачей, вместе с тем можно дать ряд рекомендаций.

Индексы следует создавать:

(i) для полей, по которым происходит отбор данных (указанных в разделе where запросов);

(ii) для полей, используемых при сортировке выбираемых запросами наборов данных (указанных в разделе order by запросов);

(iii) для полей, по которым происходит отбор диапазонов (указанных в конструкции between … and или эквивалентных логических выражениях, заданных в разделе where запросов);

(iv) для полей, по которым осуществляется соединение таблиц (указанных в конструкции join... on или эквивалентных логических выражениях, заданных в разделе where запросов).

Индексы не следует создавать:

(i) для полей, по которым не происходит отбора записей и сортировки (не используемых в разделе where и других перечисленных выше разделах запросов);

(ii) для полей, содержащих мало различных значений: пол, группа крови и др., чем больше различных значений содержит столбец таблицы, тем более эффективно будет работать созданный по нему индекс (в массивах, содержащих много повторяющихся значений двоичный поиск деградирует до линейного);

(iii) для таблиц, содержащих мало записей.

Относительно п. (iii) можно заметить следующее. Часто в БД используются небольшие справочные таблицы, которые могут занимать всего одну страницу (2..16К) (в БД университета примером такой таблицы может быть Факультет, Номер — 1 байт, Названиеchar(150) — 150 байт, длина записи — 151 байт + служебная информация, 10 факультетов, размер таблицы ~1510 байт). Как было отмечено выше, основной эффект от использования индексов состоит в минимизации количества страниц, читаемых из внешней памяти. Если таблица умещается на одной или небольшом количестве страниц, создание индекса для нее никак не повлияет на скорость выполнения запросов.

Как правило, индексы нельзя создавать для столбцов типов: bit, text, image. Поля типа bit часто упаковываются в байты — 8 подряд идущих битовых полей в записи таблицы займут один байт. Поля типов text, image и эквивалентные им, предназначенные для хранения текстовых и двоичных данных большого размера, не хранятся в таблицах. Они располагаются на отдельных страницах памяти, указатели на которые содержатся в записях таблиц БД.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 388; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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