ТОП-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. В...

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


28-12-2009

Индекс UNIQUE позволяет указать на то, что все вводимые в определенное поле значения должны быть уникальными, т.е. они не могут повторяться ни в одной из последующих записей. Этот индекс задается модификатором UNIQUE в команде CREATE TABLE или CREATE INDEX. Когда поле объявлено как UNIQUE, любая попытка ввести повторяющееся значение в это поле приводит к ошибке.
Индекс unique
Индекс unique
Индекс fulltext
Начиная с версии 3.23.23, MySQL поддерживает специальный индекс, разработанный для полнотекстового поиска в таблицах MyISAM - это индекс FULLTEXT. Данный индекс позволяет производить запрос по проиндексированным столбцам с произвольными текстовыми строками, и возвращает записи, содержащие значения, подобные искомым строкам. При таком полнотекстовом поиске, в MySQL определяется оценка подобия между записями таблицы и искомой строкой, при этом возвращаются только те записи, которые имеют наивысшую оценку подобия.
На заметку
Индексы FULLTEXT поддерживаются только таблицами типа MyISAM. Рассмотрим следующий пример.
Индекс unique
 Аргумент, который передается функции 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.
Рассмотрим следующий пример.
Индекс unique
Логический поиск
Начиная с версии 4.0.1, у MySQL появилась возможность осуществлять логический поиск по индексам FULLTEXT. Для этого необходимо добавить модификатор IN BOOLEAN MODE и один (или более) логический оператор в аргумент функции AGAINST() . Это показано в следующих примерах. В первом примере возвращаются все записи, которые содержат слова crime и suspense в поле synopsis, а во втором примере перечисляются все записи, в которых в поле synopsis содержатся слова romance, но отсутствуют слова teenage и period.
Индекс unique
Индекс unique
Начнем сначала... почти с начала
После изменения на сервере переменных, влияющих на индекс FULLTEXT, возникает необходимость в перестройке индекса. Она выполняется путем удаления и повторного создания индекса. Однако руководство по MySQL предлагает и более быструю альтернативу: использование команды REPAIR TABLE с аргументом QUICK для автоматической перестройки индекса:
Индекс unique
Заметим, что индексы типа FULLTEXT работают довольно быстро, причем особенно хорошо они работают с большими таблицами. Таблицы небольшого размера не имеют достаточного разброса значений для оптимальной работы индекса. Кроме того, они не полностью оптимизированы для работы в различных операционных средах, поэтому ими нужно пользоваться с осторожностью.
Совет
Для более быстрого полнотекстового индексирования индекс FULLTEXT лучше создавать на основе уже существующей и заполненной данными таблице с помощью команд CREATE INDEX или ALTER TABLE, а не во время создания таблицы.

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



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