Комментарии

Индексы в MySQL
( 0 Голосов )

 

После определений столбцов в рассматриваемом здесь примере команды CREATE TABLE следуют определения индексов. Первым из них определяется индекс PRIMARY KEY, обозначаемый как столбец "id" Первичный ключ можно рассматривать как наиболее предпочтительный способ поиска отдельной строки в таблице. Зачастую для этой цели служит столбец типа INTEGER с атрибутом AUTO_INCREMENT, как пояснялось ранее.

В данном примере определяются два дополнительных индекса: idx_own_prefix и idx_metakey_prefix. Имена индексов принято начинать с префикса "idx_", чтобы отличать их от имен столбцов или других имен, используемых в базе данных. Каждый индекс определяется как список, состоящий из одного или более столбца. С одной стороны, индексы помогают ускорить обработку запросов в базе данных, а с другой — замедляют в какой-то степени обновление таблицы. Поэтому индексы применяются лишь там, где они действительно способствуют обработке запросов. Применение индексов в таблицах базы данных — дело непростое, поэтому ниже приведены некоторые общие рекомендации по данному вопросу.

Чем больше строк в таблице, тем большее значение приобретают индексы. В таблице, состоящей всего лишь из 10-20 строк, индексы вообще не нужны, кроме первичного ключа, который формально является индексом.

Индексировать следует по столбцам, используемым для выбора, упорядочения или группирования. Например, в таблице # content для этой цели служат индексы по столбцам access, checked_out, state, catid, created_by и language.

He следует индексировать по столбцам, которые обычно служат лишь для отображения, но не для выбора, упорядочения или группирования. Нецелесообразно также индексировать по очень длинным столбцам, например, по столбцам типа TEXT или MEDIUMTEXT.

Применение индекса UNIQUE обеспечивает в базе данных требование однозначности столбца или группы столбцов в таблице. Это эффективный способ против дублирования данных. Например, в таблице # menu используется однозначный индекс, благодаря которому на одном уровне иерархии меню не могут появиться два пункта (строки в таблице) с одним и тем же псевдонимом и языковой поддержкой.

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

Синтаксис определения индексов обладает рядом несколько запутанных особенностей. Так, слова INDEX и KEY могут использоваться попеременно. Например, вместо строки кода INDEX "idx_own_prefix" ("own_prefix"), можно воспользоваться следующей строкой кода:

KEY "idx_own_prefix" ("own_prefix"),

А если заменить слово UNIQUE словом INDEX, база данных MySQL получит команду обеспечить однозначность значений в указанных столбцах таблицы. Например, в определении таблицы "# menu_types" имеется следующая строка кода:

UNIQUE "idx_menutype" ("menutype")

Если же попытаться ввести в эту таблицу строку, дублирующую значение в уже имеющемся столбце "menutype", то будет получено сообщение об ошибке в базе данных.

И последним в рассматриваемом здесь примере команды CREATE TABLE указывается набор символов (в данном случае — DEFAULT CHARSET=utf 8). Для таблиц базы данных Joomla всегда выбирается набор символов в коде UTF-8, поскольку это дает возможность хранить в базе данных текст на языках с нелатинскими символами.

 


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код