|
|
|
| Люди, обьясните плз что делает оператор Index в Mysql? | |
|
|
|
|
|
|
|
для: Богданн
(22.05.2011 в 18:14)
| | Он создает индекс. Вы вероятно заметили что данные в таблицах идут в разнобой (особенно после удаления и обновления), т.е. первая запись может быть в конце, вторая в середине, третья еще где-то. Более того, физически таблицу можно отсортировать только по одному столбцу, данные в других столбцах будут не отсортированы. Эту проблему можно решить при помощи конструкции ORDER BY при выводе. Понятно, что при запросах чтобы найти нужное значение в таблице, СУБД вынуждена просканировать её от начала до конца, пока не наткнется на искомое значение. Было бы здорово, если бы все столбцы хранились отдельно в отсортированном порядке, тогда сканирование не потребовалось бы, вы точно знали бы, местоположение нужного вам значения (ну или поиск можно производить в разы быстрее). Индексы по сути и представляют такие отсортированные по значению столбцы таблицы, которые ссылаются на физический адрес записи внутри таблицы. Т.е. если существует индекс, поиск производится по нему (гораздо быстрее, чем по таблице) и СУБД вытаскивает нужные ей строки уже точно зная, где они расположены. Если удается задействовать индекс, запросы часто выполняются в разы быстрее. | |
|
|
|
|
|
|
|
для: cheops
(22.05.2011 в 19:14)
| | А можно поподробнее? Мне стало интересно и я не понимаю :) | |
|
|
|
|
|
|
|
для: Maxam
(25.05.2011 в 03:27)
| | ну если очень интересно - то мой Вам совет купите книгу, не пожалеете :)
а если интересно на уровне слегка, то...
индекс это дубликат поля для служебного пользования СУБД который отсортирован хитровымудренным способом.
к примеру Вы - Система Управления Базой Данных (СУБД) есть комната (поле) в вашем доме (таблице) в которой вещи расбросаны в художественном беспорядке, что бы найти то что вы хотите придется перебирать все вещи по порядку, долго и нудно, при всем при том вы не запоминаете где лежат вещи которые вас не интересуют...
вам такая канитель не нравиться и вы создаете индекс
приходит дядя Вася каменщик и пристраивает к вашему дому еще одну махонькую комнату (индекс)
где вы точно знаете что и где лежит
теперь когда вам нужно что-то найти (например лопату) вы идете в комнату индекс берете бумажку с надписью лопата, а к ней привязана веревочка потянув за которую из своей комнаты (поля) вы достаете что? правильно лопату :) | |
|
|
|
|
|
|
|
для: Valick
(25.05.2011 в 08:05)
| | Спасибо! )))
Т.е. index может быть к нескольким полям? Это увеличивает вес таблицы, сильно? | |
|
|
|
|
|
|
|
для: Maxam
(25.05.2011 в 12:46)
| | Почему, когда я поставил index у меня количество элементов 0?
Имя ключа | Тип | Количество элементов | Поле
time | INDEX | Нет | time
|
| |
|
|
|
|
|
|
|
для: Maxam
(25.05.2011 в 12:46)
| | Попробуйте оптимизировать или восстановить таблицу.
PS time у вас целочисленное поле? Или календарное?
PPS Под новые вопросы лучше заводить новые темы. | |
|
|
|
|
|
|
|
для: cheops
(25.05.2011 в 12:57)
| | Целое, а есть разница? | |
|
|
|
|
|
|
|
для: Maxam
(13.06.2011 в 00:29)
| | Целое быстрее и индексируется лучше. | |
|
|
|
|
|
|
|
для: Maxam
(25.05.2011 в 12:46)
| | >Т.е. index может быть к нескольким полям? Это увеличивает вес таблицы, сильно?
Это зависит от типа таблицы, в MyISAM индексы хранятся отдельно от данных и на вес таблицы не влияют (хотя, конечно, место на жестком диске занимают и иногда сопоставимое с самой таблицей). В InnoDB индексы хранятся вместе с данными, более того, они привязаны к первичному ключу и не сжаты, в этом типе индексы здорово увеличивают объем таблицы. | |
|
|
|