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

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

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


person Xenph Yan    schedule 04.08.2008    source источник
comment
Это похоже на вопрос, на который хорошо бы ответила документация для сервера базы данных, который вы можете использовать. Для Oracle: [download.oracle. com/docs/cd/B28359_01/server.111/b28310/   -  person WW.    schedule 03.10.2008
comment
Я не получил правильную страницу, когда щелкнул приведенную выше ссылку для Oracle. Размещение правильной ссылки: docs.oracle.com/cd/B28359_01 /server.111/b28310/indexes003.htm   -  person Saurabh Patil    schedule 08.07.2013
comment
Одной из заявленных целей SO является появление первым в поиске Google. Часто ответ SO лучше, чем сами документы. Не было бы полезно создать ответ здесь как вики сообщества, чтобы сопоставить все ответы?   -  person Ethan Reesor    schedule 06.06.2014


Ответы (9)


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

CREATE INDEX [index name] ON [table name] ( [column name] )
person John Downey    schedule 04.08.2008
comment
В большинстве систем это также можно использовать для создания нескольких столбцов, просто добавив список имен столбцов, разделенных запятыми, вместо одного столбца. - person David Manheim; 15.06.2012

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.

person Eric Z Beard    schedule 13.08.2008

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

tables.columns.column_name.createIndex()
person tdc    schedule 23.01.2012

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

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

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

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

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

Кластерные индексы уникальны — по одному на таблицу. У них не может быть INCLUDEd столбцов.

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

person David Manheim    schedule 15.06.2012

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

  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 для получения подробной информации.

person Sharvari    schedule 02.06.2015

  1. CREATE INDEX name_index ON Employee (Employee_Name)

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

person Looking_for_answers    schedule 17.01.2017

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

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

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

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

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

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

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

person mdeora    schedule 01.06.2018

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

person SriniV    schedule 05.06.2018

Мы можем использовать следующий синтаксис для создания index.

CREATE INDEX <index_name> ON <table_name>(<column_name>)

Если мы не хотим, чтобы повторяющиеся значения были разрешены, мы можем добавить UNIQUE при создании индекса, как показано ниже.

CREATE UNIQUE INDEX <index_name> ON <table_name>(<column_name>)

Мы можем создать индекс для нескольких столбцов, указав несколько имен столбцов, разделенных «,».

person krishna kirti    schedule 07.08.2019