Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Firebird использует индексы для поддержания ссылочной целостности. При этом индексы играют такую же важную роль в оптимизации производительности при операциях поиска и упорядочения, требуемых для запросов и для изменения данных. В следующей главе мы рассмотрим в полном объеме вопросы проектирования, создания и тестирования индексов. Глава заканчивается специальным разделом, посвященным оптимизации индексов с использованием Firebird-утилиты получения статистики по индексам gstat.

<p>ГЛАВА 18. Индексы.</p></span><span>

Индексы являются атрибутами таблицы, которые могут содержать один столбец или группу столбцов для ускорения поиска строк.

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

<p>Ограничения</p></span><span>

Firebird допускает до 256 определенных пользователем индексов на одну таблицу в версии 1.5 и выше, и 64 в более ранних релизах. Однако это теоретические ограничения, которые могут быть скорректированы за счет размера страницы и фактического размера на диске данных описания индекса в корневой странице индекса. Вы не сможете хранить 256 индексов в базе данных с размером страницы менее 16 Кбайт. На корневой странице индекса каждому индексу нужен 31 байт для его идентификатора, место для описания каждого сегмента (столбца), включенного в состав индекса, и несколько байтов для хранения указателя на первую страницу индекса. Даже страница в 16 Кбайт может не оказаться способной хранить 256 индексов, если в базе данных существует немало составных индексов.

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

Общая длина индекса не может превышать 252 байта. В реальности количество байт может быть значительно меньше. Факторами, которые могут уменьшить количество фактических "мест", доступных для хранения символов, являются:

* интернациональные наборы символов, использующие несколько байт на символ;

* интернациональные наборы символов со сложными парами верхний/нижний регистры и/или сложным словарем правил сортировки;

* использование недвоичных порядков сортировки;

* множество сегментов (составной индекс), которые требуют дополнительных пустых байтов для сохранения геометрии индекса.

Другими словами, использование любого набора символов за исключением NONE будет влиять на ваши решения по проектированию индексов - особенно на использование составных индексов. Это плохие новости. Хорошие новости- Firebird правильно использует индексы из одного столбца в многостолбцовых поисках и сортировках, сокращая потребность в многостолбцовых индексах, которые вы могли использовать в других СУБД.

<p>Автоматические индексы в сравнении с определенными пользователем индексами</p></span><span>

Firebird автоматически создает индексы для обеспечения различных ограничений целостности (более подробную информацию см. в главах 16 и 17). Для удаления таких индексов необходимо удалить ограничения, которые их используют.

Использование индексов ограничений не заканчивается их работой по поддержке целостности ключей и отношений. Они рассматриваются вместе со всеми другими при подготовке запросов.

При определении ваших собственных индексов крайне важно исключить создание любых индексов, которые дублируют автоматически сгенерированные индексы. Это ставит оптимизатор (см. разд. "Планы запросов") в печальную ситуацию выбора между равными индексами. В большинстве случаев он разрешит проблему, не выбрав ни одного.

<p>Импорт существующих индексов</p></span><span>

Не импортируйте "первичные индексы" таблиц при миграции из другой СУБД. Есть две важные причины отказаться от таких индексов.

* Многие существующие системы используют иерархические структуры индексов для реализации ссылочной целостности. Базы данных SQL не используют подобную логику для реализации ссылочной целостности. Такие индексы обычно влияют на логику оптимизатора Firebird.

* Firebird создает свои собственные индексы для поддержки ограничений первичного и внешнего ключей, независимо от любого существующего индекса. Как было сказано ранее, дублирование индексов приводит к проблемам для оптимизатора и должно быть полностью исключено.

<p>Направленные индексы</p></span><span>
Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT