|
|
|
| Здравствуйте. Есть таблица:
CREATE TABLE `favorites` (
`id_user` int(11) NOT NULL,
`owner_id_user` int(11) NOT NULL,
UNIQUE KEY `inx` (`id_user`,`owner_id_user`),
KEY `owner_id_user` (`owner_id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
Уникальный индекс по двум полям нужен для оператора REPLACE, чтобы в таблицу не попали две одинаковые пары значений. Индекс по полю owner_id_user предназначен для запросов типа
SELECT * FROM favorites WHERE ownere_id_user = {$owner_id_user}
|
Делаю explain.При выполнении select используется индекс owner_id_user. Удаляю индекс owner_id_user. Делаю explain второй раз. Вижу, что используется индекс inx. Оставлять ли индекс owner_id_user? | |
|
|
|
|
|
|
|
для: antf
(18.01.2012 в 01:41)
| | explain должен сообщить сколько строк затрагивается и как используется индекс (есть обращение к таблице или используется чисто индекс без обращения)? Если не сложно приведите отчеты.
PS Если бы inx был `owner_id_user`,`id_user` то сомнений бы никаких не было, а так вообще не должен использоваться индекс, вернее использоваться он может, только вопрос в том, как он используется... | |
|
|
|
|
 21.7 Кб |
|
|
для: cheops
(18.01.2012 в 02:10)
| | >Если бы inx был `owner_id_user`,`id_user` то сомнений бы никаких не было
Т.е. можно поменять порядок полей, а индекс owner_id_user удалить?
В аттаче скрин с индексом owner_id_user. | |
|
|
|
|
 32.1 Кб |
|
|
для: antf
(18.01.2012 в 02:19)
| | Тот же самый запрос, но индекс owner_id_user удален
PS Чем отличаются столбцы possible_keys и key? | |
|
|
|
|
|
|
|
для: antf
(18.01.2012 в 02:24)
| | >PS Чем отличаются столбцы possible_keys и key?
Один возможный ключ, другой - фактический. Смотрите лучше на type:
ref - используется индекс
index - сканирование таблицы, индекс не используется. | |
|
|
|
|
|
|
|
для: antf
(18.01.2012 в 02:19)
| | >Т.е. можно поменять порядок полей, а индекс owner_id_user удалить?
Тогда не будет индекса по id_user, вернее индекс будет включаться только если вместе с id_user будет указываться owner_id_user. | |
|
|
|