Ключи

Печать RSS
257

Автор
Землянин
0
Для чего они нужны?
CREATE TABLE `f_post` (
`pid` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`text` text NOT NULL,
`time` int(11) NOT NULL default '0',
`tid` int(11) NOT NULL default '0',
PRIMARY KEY (`pid`),
KEY `tid` (`tid`)
)
Знаю только, что PRIMARY KEY значит, а другой KEY зачем?
К

Пришелец
0
KEY ставится на полях, которые учавствуют в выражениях WHERE и ORDER BY. Кстати, ORDER BY в результате на целой таблице (если записи выбраны все) использует индекс ТОЛЬКО при лимите.
Если у тебя в условии идет поиск WHERE поле = ... то конечно будет лучше если на него повесить индекс типа KEY поле (поле).
Тут еще все зависит от того, какие данные у тебя храняться в поле, если это поле числовое, то на него можно повесить просто KEY, если поле, например, VARCHAR , то имеет смысл делать индекс только по первый 10-15 символам, этого вполне хватит для построения ключа, т.е. KEY title (title(10)). Если у тебя в поле храняться уникальные значение (я имею ввиду не id primary key), допустим какое нить name, то тут лучше всего есть смысл повесить на него уникальный ключ UNIQUE name (name).
Да и еще, индексы вешаются на поля NOT NULL.
Б

Пацак
0
Колян хорошо расписал,еднственно что добавлю, немного не потме конешн,на счет VARCHAR,желательно его не юзать, используй TEXT,для оптимизации должно быть лучше. (читал манны,там так писалось,что варчар убийственный тип данных,огромное количество инфы не советуется хранить).
Автор
Землянин
0
2,Спасибо большое.
3, ещё как вариант можно юзать CHAR.
Читал мануал, половину не понял. В скобках типа можно ещё писать поля? Типа KEY `поле1`(`поле1`,`поле2`)
Можно это по подробней?
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск