СУБД/лекция 6 семестр 2 — различия между версиями
Материал из Wiki
< СУБД
Vidokq (обсуждение | вклад) (Новая страница: «*[http://www.mysql.ru/docs/man/CREATE_INDEX.html Литература] <source lang="sql">CREATE [UNIQUE|FULLTEXT] INDEX index_name ON tbl_name (col_nam…») |
Vidokq (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
| − | <source lang="sql">CREATE [UNIQUE|FULLTEXT] INDEX index_name | + | <source lang="sql"> |
| + | CREATE [UNIQUE|FULLTEXT] INDEX index_name | ||
ON tbl_name (col_name[(length)],... )</source> | ON tbl_name (col_name[(length)],... )</source> | ||
| − | * {{X|24px}}Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий. | + | * {{X|24px}} Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий. |
| − | * {{V|24px}}В версии 3.22 и более поздних CREATE INDEX соответствует команде ALTER TABLE в части создания индексов. | + | * {{V|24px}} В версии 3.22 и более поздних '''CREATE INDEX''' соответствует команде '''ALTER TABLE''' в части создания индексов. |
| + | '''ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]''' | ||
| + | alter_specification: | ||
| + | ADD [COLUMN] create_definition [FIRST | AFTER column_name ] | ||
| + | или ADD [COLUMN] (create_definition, create_definition,...) | ||
| + | или ADD INDEX [index_name] (index_col_name,...) | ||
| + | или '''ADD PRIMARY KEY (index_col_name,...)''' | ||
| + | или ADD UNIQUE [index_name] (index_col_name,...) | ||
| + | или ADD FULLTEXT [index_name] (index_col_name,...) | ||
| + | или ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) | ||
| + | [reference_definition] | ||
| + | или ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | ||
| + | или CHANGE [COLUMN] old_col_name create_definition | ||
| + | [FIRST | AFTER column_name] | ||
| + | или MODIFY [COLUMN] create_definition [FIRST | AFTER column_name] | ||
| + | или DROP [COLUMN] col_name | ||
| + | или DROP PRIMARY KEY | ||
| + | или DROP INDEX index_name | ||
| + | или DISABLE KEYS | ||
| + | или ENABLE KEYS | ||
| + | или RENAME [TO] new_tbl_name | ||
| + | или ORDER BY col | ||
| + | или table_options | ||
* Обычно все индексы создаются в таблице во время создания самой таблицы командой '''CREATE TABLE.''' | * Обычно все индексы создаются в таблице во время создания самой таблицы командой '''CREATE TABLE.''' | ||
* '''CREATE INDEX''' дает возможность добавить индексы к существующим таблицам. | * '''CREATE INDEX''' дает возможность добавить индексы к существующим таблицам. | ||
Версия 19:14, 31 марта 2014
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON tbl_name (col_name[(LENGTH)],... )
-
Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий.
-
В версии 3.22 и более поздних CREATE INDEX соответствует команде ALTER TABLE в части создания индексов.
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
или ADD [COLUMN] (create_definition, create_definition,...)
или ADD INDEX [index_name] (index_col_name,...)
или ADD PRIMARY KEY (index_col_name,...)
или ADD UNIQUE [index_name] (index_col_name,...)
или ADD FULLTEXT [index_name] (index_col_name,...)
или ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
или ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
или CHANGE [COLUMN] old_col_name create_definition
[FIRST | AFTER column_name]
или MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
или DROP [COLUMN] col_name
или DROP PRIMARY KEY
или DROP INDEX index_name
или DISABLE KEYS
или ENABLE KEYS
или RENAME [TO] new_tbl_name
или ORDER BY col
или table_options
- Обычно все индексы создаются в таблице во время создания самой таблицы командой CREATE TABLE.
- CREATE INDEX дает возможность добавить индексы к существующим таблицам.
- Список столбцов в форме (col1,col2,...) создает индекс для нескольких столбцов. Величины индексов формируются путем конкатенации величин указанных столбцов.
Для столбцов типов CHAR и VARCHAR с помощью параметра col_name(length) могут создаваться индексы, для которых используется только часть столбца (для столбцов BLOB и TEXT нужно указывать длину). Команда, приведенная ниже, создает индекс, используя первые 10 символов столбца name:
CREATE INDEX part_of_name ON customer (name(10));
Поскольку большинство имен обычно имеют отличия друг от друга в первых 10 символах, данный индекс не должен быть намного медленнее, чем созданный из столбца name целиком. Кроме того, используя неполные столбцы для индексов, можно сделать файл индексов намного меньше, а это позволяет сэкономить место на диске и к тому же повысить скорость операций INSERT!
Следует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц типа MyISAM можно добавлять индекс только для столбцов, которые могут принимать величины NULL или для столбцов BLOB/TEXT.