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

Форум MySQL

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

 

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

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

тема: Для чего используется Index
 
 автор: Богданн   (22.05.2011 в 18:14)   письмо автору
 
 

Люди, обьясните плз что делает оператор Index в Mysql?

  Ответить  
 
 автор: cheops   (22.05.2011 в 19:14)   письмо автору
 
   для: Богданн   (22.05.2011 в 18:14)
 

Он создает индекс. Вы вероятно заметили что данные в таблицах идут в разнобой (особенно после удаления и обновления), т.е. первая запись может быть в конце, вторая в середине, третья еще где-то. Более того, физически таблицу можно отсортировать только по одному столбцу, данные в других столбцах будут не отсортированы. Эту проблему можно решить при помощи конструкции ORDER BY при выводе. Понятно, что при запросах чтобы найти нужное значение в таблице, СУБД вынуждена просканировать её от начала до конца, пока не наткнется на искомое значение. Было бы здорово, если бы все столбцы хранились отдельно в отсортированном порядке, тогда сканирование не потребовалось бы, вы точно знали бы, местоположение нужного вам значения (ну или поиск можно производить в разы быстрее). Индексы по сути и представляют такие отсортированные по значению столбцы таблицы, которые ссылаются на физический адрес записи внутри таблицы. Т.е. если существует индекс, поиск производится по нему (гораздо быстрее, чем по таблице) и СУБД вытаскивает нужные ей строки уже точно зная, где они расположены. Если удается задействовать индекс, запросы часто выполняются в разы быстрее.

  Ответить  
 
 автор: Maxam   (25.05.2011 в 03:27)   письмо автору
 
   для: cheops   (22.05.2011 в 19:14)
 

А можно поподробнее? Мне стало интересно и я не понимаю :)

  Ответить  
 
 автор: Valick   (25.05.2011 в 08:05)   письмо автору
 
   для: Maxam   (25.05.2011 в 03:27)
 

ну если очень интересно - то мой Вам совет купите книгу, не пожалеете :)
а если интересно на уровне слегка, то...
индекс это дубликат поля для служебного пользования СУБД который отсортирован хитровымудренным способом.
к примеру Вы - Система Управления Базой Данных (СУБД) есть комната (поле) в вашем доме (таблице) в которой вещи расбросаны в художественном беспорядке, что бы найти то что вы хотите придется перебирать все вещи по порядку, долго и нудно, при всем при том вы не запоминаете где лежат вещи которые вас не интересуют...
вам такая канитель не нравиться и вы создаете индекс
приходит дядя Вася каменщик и пристраивает к вашему дому еще одну махонькую комнату (индекс)
где вы точно знаете что и где лежит
теперь когда вам нужно что-то найти (например лопату) вы идете в комнату индекс берете бумажку с надписью лопата, а к ней привязана веревочка потянув за которую из своей комнаты (поля) вы достаете что? правильно лопату :)

  Ответить  
 
 автор: Maxam   (25.05.2011 в 12:46)   письмо автору
 
   для: Valick   (25.05.2011 в 08:05)
 

Спасибо! )))

Т.е. index может быть к нескольким полям? Это увеличивает вес таблицы, сильно?

  Ответить  
 
 автор: Maxam   (25.05.2011 в 12:46)   письмо автору
 
   для: Maxam   (25.05.2011 в 12:46)
 

Почему, когда я поставил index у меня количество элементов 0?
Имя ключа | Тип | Количество элементов | Поле
time | INDEX | Нет | time

  Ответить  
 
 автор: cheops   (25.05.2011 в 12:57)   письмо автору
 
   для: Maxam   (25.05.2011 в 12:46)
 

Попробуйте оптимизировать или восстановить таблицу.

PS time у вас целочисленное поле? Или календарное?
PPS Под новые вопросы лучше заводить новые темы.

  Ответить  
 
 автор: Maxam   (13.06.2011 в 00:29)   письмо автору
 
   для: cheops   (25.05.2011 в 12:57)
 

Целое, а есть разница?

  Ответить  
 
 автор: cheops   (13.06.2011 в 02:52)   письмо автору
 
   для: Maxam   (13.06.2011 в 00:29)
 

Целое быстрее и индексируется лучше.

  Ответить  
 
 автор: cheops   (25.05.2011 в 12:56)   письмо автору
 
   для: Maxam   (25.05.2011 в 12:46)
 

>Т.е. index может быть к нескольким полям? Это увеличивает вес таблицы, сильно?
Это зависит от типа таблицы, в MyISAM индексы хранятся отдельно от данных и на вес таблицы не влияют (хотя, конечно, место на жестком диске занимают и иногда сопоставимое с самой таблицей). В InnoDB индексы хранятся вместе с данными, более того, они привязаны к первичному ключу и не сжаты, в этом типе индексы здорово увеличивают объем таблицы.

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

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