Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужен ли индекс? Конкретный случай
 
 автор: antf   (18.01.2012 в 01:41)   письмо автору
 
 

Здравствуйте. Есть таблица:

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?

  Ответить  
 
 автор: cheops   (18.01.2012 в 02:10)   письмо автору
 
   для: antf   (18.01.2012 в 01:41)
 

explain должен сообщить сколько строк затрагивается и как используется индекс (есть обращение к таблице или используется чисто индекс без обращения)? Если не сложно приведите отчеты.

PS Если бы inx был `owner_id_user`,`id_user` то сомнений бы никаких не было, а так вообще не должен использоваться индекс, вернее использоваться он может, только вопрос в том, как он используется...

  Ответить  
 
 автор: antf   (18.01.2012 в 02:19)   письмо автору
21.7 Кб
 
   для: cheops   (18.01.2012 в 02:10)
 

>Если бы inx был `owner_id_user`,`id_user` то сомнений бы никаких не было

Т.е. можно поменять порядок полей, а индекс owner_id_user удалить?

В аттаче скрин с индексом owner_id_user.

  Ответить  
 
 автор: antf   (18.01.2012 в 02:24)   письмо автору
32.1 Кб
 
   для: antf   (18.01.2012 в 02:19)
 

Тот же самый запрос, но индекс owner_id_user удален

PS Чем отличаются столбцы possible_keys и key?

  Ответить  
 
 автор: cheops   (18.01.2012 в 02:35)   письмо автору
 
   для: antf   (18.01.2012 в 02:24)
 

>PS Чем отличаются столбцы possible_keys и key?
Один возможный ключ, другой - фактический. Смотрите лучше на type:
ref - используется индекс
index - сканирование таблицы, индекс не используется.

  Ответить  
 
 автор: cheops   (18.01.2012 в 02:37)   письмо автору
 
   для: antf   (18.01.2012 в 02:19)
 

>Т.е. можно поменять порядок полей, а индекс owner_id_user удалить?
Тогда не будет индекса по id_user, вернее индекс будет включаться только если вместе с id_user будет указываться owner_id_user.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования