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

Форум MySQL

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

 

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

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

тема: Индексы
 
 автор: admiral   (18.03.2010 в 14:19)   письмо автору
 
 

У меня такой вопрос. Например, есть таблица, при выборки записи из нее в конструкции where участвуют поля A,B,C и запрос группируется по столбцу A.
Отсюда следующий вопрос.
Какой правильный индекс следует создать для более быстрой выборки данных:
KEY(A,B,C) , то есть сразу для нескольких столбцов или по отдельности каждый KEY(A),KEY(B),KEY(C).

И как поведет себя оптимизатор при втором варианте?

  Ответить  
 
 автор: cheops   (18.03.2010 в 15:19)   письмо автору
 
   для: admiral   (18.03.2010 в 14:19)
 

Лучше два ключа KEY(A,B,C) и KEY(A)

  Ответить  
 
 автор: Trianon   (18.03.2010 в 15:49)   письмо автору
 
   для: cheops   (18.03.2010 в 15:19)
 

Если серверу приспичит воспользоваться ключом A , то он его и в наборе ABC отыщет.
Чего не скаажешь о ключах B и C.
Составной ключ ABC для поиска / сортировки / группировки по ключам, не являющимся его левой частью, совершенно бесполезен. К ним относятся простые B, C, и все составные, кроме AB и ABC.

  Ответить  
 
 автор: admiral   (18.03.2010 в 16:02)   письмо автору
 
   для: Trianon   (18.03.2010 в 15:49)
 

То есть здесь составной ключ бессмысленно использовать?

Я вот проделал тесты где, если использовать составной индекс, то запрос при 300тыс записей выполнился ~ 0.0029, а при отдельных индексах запрос выполнялся за ~ 0.0009

  Ответить  
 
 автор: Trianon   (18.03.2010 в 16:14)   письмо автору
 
   для: admiral   (18.03.2010 в 16:02)
 

Запрос, говорите?
Выполнялся?
Странно...

  Ответить  
 
 автор: admiral   (18.03.2010 в 16:30)   письмо автору
 
   для: Trianon   (18.03.2010 в 16:14)
 


SELECT * FROM tbl WHERE a = 'a' AND b = 'b' AND c = 'c' GROUP BY a


1. KEY(A,B,C) ~ 0.0029
2. KEY(A),KEY(B),KEY(C) ~ 0.0009

В чем странность-то?

  Ответить  
 
 автор: Trianon   (18.03.2010 в 16:34)   письмо автору
 
   для: admiral   (18.03.2010 в 16:30)
 

Теперь странность в SELECT * GROUP BY

  Ответить  
 
 автор: Trianon   (18.03.2010 в 16:38)   письмо автору
 
   для: admiral   (18.03.2010 в 16:30)
 

Попробуйте
SELECT * ORDER BY a
SELECT * ORDER BY b
SELECT * ORDER BY c

  Ответить  
 
 автор: Рома   (19.03.2010 в 16:38)   письмо автору
 
   для: Trianon   (18.03.2010 в 15:49)
 

Че-то я не понял, если KEY(A,B,C), KEY(B,C), KEY(B), KEY(C), KEY(C,A), KEY(C,B), охватывают все возможные варианты сортировок запроса, то все возможные выборки поиска / сортировки / группировки будут выполняться быстро, в отличие от KEY(A,B,C), KEY(A)?

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

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