Индекс UNIQUE позволяет указать на то, что все вводимые в определенное поле значения должны быть уникальными, т.е. они не могут повторяться ни в одной из последующих записей. Этот индекс задается модификатором UNIQUE в команде CREATE TABLE или CREATE INDEX. Когда поле объявлено как UNIQUE, любая попытка ввести повторяющееся значение в это поле приводит к ошибке.
Индекс fulltext
Начиная с версии 3.23.23, MySQL поддерживает специальный индекс, разработанный для полнотекстового поиска в таблицах MyISAM - это индекс FULLTEXT. Данный индекс позволяет производить запрос по проиндексированным столбцам с произвольными текстовыми строками, и возвращает записи, содержащие значения, подобные искомым строкам. При таком полнотекстовом поиске, в MySQL определяется оценка подобия между записями таблицы и искомой строкой, при этом возвращаются только те записи, которые имеют наивысшую оценку подобия.
На заметку
Индексы FULLTEXT поддерживаются только таблицами типа MyISAM. Рассмотрим следующий пример.
Аргумент, который передается функции MATCH(), представляет собой список полей, которые обязательно должны входить в какой-то индекс FULLTEXT таблицы. Функция MATCH() дает оценку подобия между искомой строкой и указанными полями по каждой записи в таблице. Согласно руководству по MySQL, которое находится на Web-узле http://www.mysql.com/documentation/, оценка подобия вычисляется на основе ряда параметров:
■ количество слов в строке;
■ количество уникальных слов в строке;
■ общее количество слов в наборе;
■ количество строк, в которых содержится определенное слово.
Оценка подобия 0 свидетельствует о том, что подобие между сравниваемыми значениями отсутствует полностью.
Слова, которые встречаются более чем в 50% всех записей таблицы (т.н. стоп-слова), игнорируются и считаются несущественными при полнотекстовом поиске. Аналогично, словам, которые появляются в тексте чаще, присваивается меньший вес в индексе, чем словам, которые появляются чаще.
Список стоп-слов с минимальной и максимальной длиной слова принимается во внимание в процессе принятия решения о том, какие слова необходимо включить в индекс FULLTEXT. Его можно задать переменными настройки сервера ft_stopword_file, ft_min_word_len и ft_max_word_len. Подробнее о том, каким образом меняются переменные сервера, можно узнать в главе 13, "Администрирование и настройка".
Обычно при поиске записей с высокой оценкой подобия функция MATCH() используется в предложении WHERE.
Рассмотрим следующий пример.
Логический поиск
Начиная с версии 4.0.1, у MySQL появилась возможность осуществлять логический поиск по индексам FULLTEXT. Для этого необходимо добавить модификатор IN BOOLEAN MODE и один (или более) логический оператор в аргумент функции AGAINST() . Это показано в следующих примерах. В первом примере возвращаются все записи, которые содержат слова crime и suspense в поле synopsis, а во втором примере перечисляются все записи, в которых в поле synopsis содержатся слова romance, но отсутствуют слова teenage и period.
Начнем сначала... почти с начала
После изменения на сервере переменных, влияющих на индекс FULLTEXT, возникает необходимость в перестройке индекса. Она выполняется путем удаления и повторного создания индекса. Однако руководство по MySQL предлагает и более быструю альтернативу: использование команды REPAIR TABLE с аргументом QUICK для автоматической перестройки индекса:
Заметим, что индексы типа FULLTEXT работают довольно быстро, причем особенно хорошо они работают с большими таблицами. Таблицы небольшого размера не имеют достаточного разброса значений для оптимальной работы индекса. Кроме того, они не полностью оптимизированы для работы в различных операционных средах, поэтому ими нужно пользоваться с осторожностью.
Совет
Для более быстрого полнотекстового индексирования индекс FULLTEXT лучше создавать на основе уже существующей и заполненной данными таблице с помощью команд CREATE INDEX или ALTER TABLE, а не во время создания таблицы.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Индекс unique
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Индексы | Все о MySQL. Первичные ключи |