ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

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

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

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

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Спонсор статьи: Сборка компьютера на дому услуги по сборке компьютеров supercomp.kiev.ua.

Все о MySQL. Индексы


28-12-2009

Для того чтобы повысить скорость поиска и уменьшить время выполнения запросов, MySQL позволяет задавать индексы для определенных полей таблицы. Термин "индекс" здесь означает то же, что и в реальном мире. Аналогичный по назначению и концепции индекс вы найдете в конце данной книги - это не что иное, как предметный указатель. Индекс представляет собой упорядоченный перечень отсортированных значений полей, предназначенных для упрощения задачи поиска определенных полей при запросах.
При отсутствии индекса, MySQL необходимо просмотреть последовательно все записи таблицы для того, чтобы найти записи, соответствующие определенному запросу. На небольших таблицах это не слишком заметно, но по мере увеличения размера таблицы полный просмотр ее приводит к существенным задержкам при обработке запроса. Индекс существенно улучшает ситуацию: при наличии индекса, MySQL может вообще не производить полного просмотра таблицы, при этом достаточно просмотреть индекс и прямо перейти к определенным записям в таблице. При поиске записей, которые соответствуют определенным условиям поиска, чтение индекса обычно происходит быстрее просмотра всей таблицы, поскольку индексы по своим размерам значительно меньше размеров таблицы. Поэтому просмотр индекса производится быстрее (о том, как индексы влияют на производительность, можно подробнее узнать в главе 16, "Оптимизация производительности").
Нужно отметить, что использование индексов приводит и к определенным издержкам: для них требуется дополнительное дисковое пространство, и кроме того они влияют на скорость выполнения запросов INSERT, UPDATE и DELETE, т.к. при модификации записей в таблицах, добавлении в таблицы новых записей или удалении их из таблиц модификация должна производиться и в индексе. Но в большинстве случаев это не должно стать причиной для отказа от использования индексов: дисковое пространство дешевеет с каждым днем, а MySQL имеет множество методов оптимизации для уменьшения времени, необходимого для модификации индексов и просмотра их в целях поиска определенных значений (см. детали во врезке "Ударим хешем по производительности").
Ударим хешем по производительности
При работе с таблицами типа InnoDB, для уменьшения количества операций записи на диск, MySQL использует "разумную" буферизацию. Она заключается в создании протокола изменений в специальном буфере добавлений, с последующим обновлением всего индекса с учетом всех изменений, причем в одной операции записи (вместо многочисленных мгновенных операций записи). MySQL также пытается преобразовать индексы с использованием B-дерева (хранящегося на диске) в адаптивные хеши-рованные индексы (поиск по которым производится значительно быстрее), основанные на шаблонах выполняемых запросов. 
Индексирование рекомендуется прежде всего для полей, которые используются в предложениях WHERE, ORDER BY и GROUP BY запросов SELECT, и в полях, которые ис­пользуются для объединения таблиц.
Индексы создаются путем добавления модификатора INDEX к оператору CREATE TABLE.
Индексы
Для полей типа BLOB и TEXT, возможно задать определенное количество индексируемых символов. Для этого нужно задать длину индекса в скобках после имени поля в операторе CREATE INDEX, что демонстрируется в следующем примере.
Индексы
Такое частичное индексирование вполне возможно (хотя и не всегда) и для полей CHAR и VARCHAR.
На заметку
Если в операторе CREATE INDEX или CREATE TABLE имя индекса отсутствует, MySQL автома­тически присваивает индексу имя индексируемого поля.
Если индекс вам больше не нужен, его можно удалить с помощью команды DROP INDEX:
DROP INDEX имя-индекса ON имя-таблицы;
Далее следует пример удаления индекса username, созданного в предыдущем примере.
Индексы
Кроме индексов "обычного" типа, MySQL поддерживает еще два важных типа индексов: UNIQUE и FULLTEXT, речь о которых пойдет ниже.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Создание таблиц Все о MySQL. Индекс unique