Сведения о вопросе

Gaukhar

16:03, 1st July, 2020

Теги

sql   database   indexing    

Как индексировать столбец базы данных

Просмотров: 454   Ответов: 8

Надеюсь, я смогу получить ответы для каждого сервера баз данных.

Для получения общих сведений о том, как работает индексация, ознакомьтесь с разделом: как работает индексация базы данных?



  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

Ниже приведен стандарт SQL92, поэтому он должен поддерживаться большинством RDMBS, использующих SQL:

CREATE INDEX [index name] ON [table name] ( [column name] )


  Сведения об ответе

VERSUION

18:03, 1st July, 2020

Sql Server 2005 дает вам возможность указать индекс покрытия. Это индекс, который включает данные из других столбцов на конечном уровне, поэтому вам не нужно возвращаться к таблице, чтобы получить столбцы, которые не включены в ключи индекса.

create nonclustered index my_idx on my_table (my_col1 asc, my_col2 asc) include (my_col3);

Это очень важно для запроса, который имеет my_col3 в списке выбора и my_col1 и my_col2 в предложении where.


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

Для python pytables индексы не имеют имен и привязаны к отдельным столбцам:

tables.columns.column_name.createIndex()


  Сведения об ответе

LIZA

18:03, 1st July, 2020

В SQL Server вы можете сделать следующее: (MSDN ссылка на полный список опций.)

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    [ INCLUDE ( column_name [ ,...n ] ) ]
    [ WHERE <filter_predicate> ]

(игнорируя некоторые дополнительные параметры...)

Имя каждого индекса должно быть уникальным для всей базы данных.

Все индексы могут иметь несколько столбцов, и каждый столбец может быть упорядочен в любом порядке, который вы хотите.

Кластеризованные индексы уникальны - по одному на таблицу. Они не могут иметь INCLUDE D столбцов.

Некластеризованные индексы не являются уникальными и могут иметь до 999 значений для каждой таблицы. Они могут включать столбцы и предложения where.


  Сведения об ответе

nYU

18:03, 1st July, 2020

Для создания индексов можно использовать следующие материалы:

  1. Создает индекс в таблице. Допускаются повторяющиеся значения: CREATE INDEX index_name ON table_name (column_name)

  2. Создает уникальный индекс для таблицы. Повторяющиеся значения не допускаются: CREATE UNIQUE INDEX index_name ON table_name (column_name)

  3. Кластеризованный Индекс: CREATE CLUSTERED INDEX CL_ID ON SALES(ID);

  4. Некластеризованный индекс:
    CREATE NONCLUSTERED INDEX NONCI_PC ON SALES(ProductCode);

Обратитесь: http://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server для деталей.


  Сведения об ответе

screen

18:03, 1st July, 2020

  1. CREATE INDEX name_index ON Employee (Employee_Name)

  2. На несколько столбцов: CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)


  Сведения об ответе

P_S_S

18:03, 1st July, 2020

Поскольку большинство ответов дается для баз данных SQL, я пишу это для баз данных NOSQL, в частности для MongoDB.

Ниже приведен синтаксис для создания индекса в MongoDB с помощью mongo shell.

db.collection.createIndex( <key and index type specification>, <options> )

пример - db.collection.createIndex( { name: -1 } )

В приведенном выше примере для имени создается один ключевой нисходящий индекс поле.

Имейте в виду, что MongoDB indexes использует структуру данных B-дерева.

Существует несколько типов индексов, которые мы можем создать в mongodb, для получения дополнительной информации см. ссылку ниже - https://docs.mongodb.com/manual/indexes/


  Сведения об ответе

darknet

18:03, 1st July, 2020

Индекс не всегда нужен для всех баз данных. Например: kognitio aka wx2 engine не предлагает синтаксис для индексирования, поскольку компонент database engine заботится о нем неявно. Данные передаются через циклическое секционирование, и Kognitio WX2 получает данные на диск и с него самым простым из возможных способов.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться