Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> индексы 
V
    Опции темы
bars80080
Дата 25.5.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



тяжело копаться в нюансах аглицкой документации, потому небольшой блиц:

1. первичный индекс (primary key) один на таблицу?
2. он обязательно должен присутствовать в таблице?
3. можно ли его назначать на нечисловые типы полей?
4. авто инкремент можно назначить только числовому полю с первичным индексом?
5. полю типа float можно назначить авто инкремент?
6. индексы можно назначать нескольким полям?
7. групповые индексы не имеют ограничений?
8. первичный индекс не может быть групповым?

спасибо
PM MAIL WWW   Вверх
skyboy
Дата 25.5.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



1. Да.
2. не обязательно, но его использование, кроме ускорения выполнения соответствующих запросов, упрощают работу front-end'a(мелочь, в принципе). 
3. да. но для всяких varchar и прочих с переменной длиной надо указывать длину, которая будет индексироваться(соответственно, остаток индексироваться не будет)
4. да.
5. нет. но можно эмулировать через триггер.
6. есть сложный индекс - один индекс по нескольким полям. или можно сделать несколько разных индексов на разные наборы полей. как угодно.
7. есть, но косвенные. к примеру, если по конфигурации сервера, индекс не будет умещаться целиком(может, "целиком" и необязательно) в дозволенный объем памяти, то не будет использоваться в запросах.
8. в смысле, составным? вполне может. странно, что ты сам не попробовал. разве это долго?
PM MAIL   Вверх
bars80080
Дата 25.5.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



Цитата(skyboy @  25.5.2009,  13:17 Найти цитируемый пост)
странно, что ты сам не попробовал. разве это долго? 

я сейчас со всех сторон гоняю разные типы полей, так что есть чем заняться, а с индексами вообще не дружу. вроде знание есть, а желания использовать (понимания) - нет. вот и спросил
PM MAIL WWW   Вверх
bars80080
Дата 25.5.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



вы выиграли суперблиц

Цитата(skyboy @  25.5.2009,  13:17 Найти цитируемый пост)
да. но для всяких varchar и прочих с переменной длиной надо указывать длину, которая будет индексироваться(соответственно, остаток индексироваться не будет)

1. имеется ввиду char, varchar, и все text? а date, time, timestamp?
2. для них обязательно указывать длину?
3. можно ли для других полей (int, float) указывать длину?
4. какие пределы этой длины?


PM MAIL WWW   Вверх
skyboy
Дата 26.5.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



ориентируясь на ман:
1, 2. для char, varchar, binary и varbinary полей длина может быть указана. Для включения в индекс text/blob полей длину указывать обязательно. для 5 ветки не актуально(индекс создается автоматически), а вот для более ранних, индексирование varchar/varbinary без указания длины может повлияет на производительность вставки/изменения/удаления - действия, напрямую связанных с перестройкой индекса. time, date, timestamp - суть int поля, со специфической обработкой. нет, для них не надо указывать длину.
3. нет. а зачем? smile
4. зависят от storage engine. как указано в мане, для myisam - 1000 байт, для innodb - 767. 
обращаю внимание, что длина трактуется, как указанная в символах(для полей кроме blob/binary/varbinary), а, значит, 501 символ для индекса по полю в кодировке utf8 - может быть уже слишком много для myisam.
PM MAIL   Вверх
bars80080
Дата 27.5.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



лады
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.