«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

СУБД/лекция 6 семестр 2 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Новая страница: «*[http://www.mysql.ru/docs/man/CREATE_INDEX.html Литература] <source lang="sql">CREATE [UNIQUE|FULLTEXT] INDEX index_name ON tbl_name (col_nam…»)
 
Строка 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)],... )
  • Nuvola apps error.png Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий.
  • 200px-Yes check.png В версии 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!

Bombilla amarilla - yellow Edison lamp.pngСледует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц типа MyISAM можно добавлять индекс только для столбцов, которые могут принимать величины NULL или для столбцов BLOB/TEXT.