|
|
|
| Извините за тупой вопрос, просто в книге я чего-то не понял?
И как они устанавливаются? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(03.10.2004 в 04:22)
| | Инедксирование столбца - это по сути создание копии этого столбца. Поэтому чем больше индексов в таблице, тем быстрее увеличивеется её размер. Эта копия всегда поддерживается в отсортированном состоянии, т.е. даже при добавлении новой записи - индекс всё равно будет в отсортированном состоянии. Наличие индекса приводит к значительному ускорению выборки по индексированным столбцам (особенно если столбец присутствует в выражении WHERE), так как база данных заранее "знает" где находится нужное значение и ей не требуется сканировать всю таблицу. В тоже время замедляются операции связанные с изменением таблицы (INSERT, DELETE...), так как такие операции приводят к необходимости сортировки индекса. Поэтому часто при добавлении первоначально больших объёмов данных рекоммендуется создавать индексы после заполнения базы данных.
Больше двух столбцов индексировать не стоит (лучше если это будут первичные и вторичные ключи, часто используемые в выражении WHERE).
Создать индекс можно при создании самой таблицы
CREATE TABLE avto_direction (
id_direction int(11) NOT NULL auto_increment,
id_point int(11) NOT NULL default '0',
PRIMARY KEY (id_direction),
INDEX id_point (id_point)
) TYPE=MyISAM;
|
В этой таблицы 2 столбца и 2 индекса id_direction - это первичный ключ (первичный ключ всегда индексирован - PRIMARY KEY) и индекс id_point для оставшегося столбца - id_point (имя индекса и столбца не обязательно должны совпадать). Для создания уникального индекса (каждая запись должна иметь уникальное значение не совпадающее со значениями других записей) вместро INDEX следует использовать ключевое слово UNIQUE.
Создать индекс в уже существующей таблице можно при помощи оператора CREATE:
CREATE INDEX index_name ON tbl_name (index_columns);
CREATE UNIQUE INDEX index_name ON tbl_name (index_columns);
|
где index_name, tbl_name и index_columns являются именем индекса, таблицы и индексируемый столбец, соответсвенно.
PS Особняком стоит индекс FULLTEXT, позволяющий производить полнотекстовый поиск по таблице.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148 | |
|
|
|
|
|
|
|
для: cheops
(03.10.2004 в 11:46)
| | Благодарю!!! :) | |
|
|
|
|
|
|
|
для: cheops
(03.10.2004 в 11:46)
| | А index на тип столбца mediumtext можно поставит? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(04.10.2004 в 05:21)
| | Ну... назначить индекс FULLTEXT для полнотекстового поиска можно, а обычным индексом для стлбцов TEXT и BLOB воспользоваться нельзя. Можно индексировать CHAR, но только лучше не полностью а первые 10-15 символов
CREATE TABLE indextable
{
name CHAR(255),
INDEX (name(10))
}
|
| |
|
|
|