индексы в mysql



Автор Прим Палвер задал вопрос в разделе Другие языки и технологии

Как работает индекс в MySQL? и получил лучший ответ

Ответ от Антон -[гуру]
Используется всегда какой то один индекс таблицы, либо ни одного. Индекс выбирается по критерию: отсечь как можно больше данных. Чтобы посмотреть какой индекс использует MySQL на конкретном запросе, нужно перед запросом добавить слово EXPLAIN:
EXPLAIN SELECT * FROM ...
>> установить несколько индексов на одно текстовое поле базы данных
это как?
Антон -
Мыслитель
(5266)
> Я так понимаю, вы вообще с этим не сталкивались
Почти верно, всегда работал с числовыми индексами.
Целесообразнее один индекс, тот что длиннее, т.к. address(6) будет содержать всю структуру индекса address(3). Т.е. на вставках ресурсы будут тратиться на обновление 2ух индексов, а данные в них фактически частично дублируются.
Как подобрать длину... Увеличивать "1" в этом запросе, пока 2 колонки не станут численно близки в пределах одного порядка. Т.е. индекс должен содержать такую подстроку, чтобы количество уникальных записей в индексе было как можно большим. В идеале эти числа должны быть равны, но на таком поле как адрес при большом количестве записей добиться этого 5ю символами тяжело.
SELECT COUNT(DISTINCT SUBSTRING(`address`, 0, 1)), COUNT(`address`) FROM `table`

Ответ от Александр Краповницкий[гуру]
Многое зависит от того что в этой строке содержится. Можно разбить колонку на несколько разных, при записи строки производить некие дополнительные операции упрощающие будущий поиск. Вплоть до вставки HASH колонки по которой сперва фильтруется таблица, а потом из 1-2 строк выбирается строка удовлетворяющая условию фильтра по текстовому полю. Это работает идеально быстро, скажем если HASH ничто иное как Int32.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Как работает индекс в MySQL?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*