How do I index a database column

SqlDatabaseIndexing

Sql Problem Overview


Hopefully, I can get answers for each database server.

For an outline of how indexing works check out: <https://stackoverflow.com/questions/1108/how-does-database-indexing-work>

Sql Solutions


Solution 1 - Sql

The following is SQL92 standard so should be supported by the majority of RDMBS that use SQL:

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

Solution 2 - Sql

Sql Server 2005 gives you the ability to specify a covering index. This is an index that includes data from other columns at the leaf level, so you don't have to go back to the table to get columns that aren't included in the index keys.

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

This is invaluable for a query that has my_col3 in the select list, and my_col1 and my_col2 in the where clause.

Solution 3 - Sql

For python pytables, indexes don't have names and they are bound to single columns:

tables.columns.column_name.createIndex()

Solution 4 - Sql

In SQL Server, you can do the following: (MSDN Link to full list of options.)

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

(ignoring some more advanced options...)

The name of each Index must be unique database wide.

All indexes can have multiple columns, and each column can be ordered in whatever order you want.

Clustered indexes are unique - one per table. They can't have INCLUDEd columns.

Nonclustered indexes are not unique, and can have up to 999 per table. They can have included columns, and where clauses.

Solution 5 - Sql

To create indexes following stuff can be used:

  1. Creates an index on a table. Duplicate values are allowed: CREATE INDEX index_name ON table_name (column_name)

  2. Creates a unique index on a table. Duplicate values are not allowed: CREATE UNIQUE INDEX index_name ON table_name (column_name)

  3. Clustered Index: CREATE CLUSTERED INDEX CL_ID ON SALES(ID);

  4. Non-clustered index:
    CREATE NONCLUSTERED INDEX NONCI_PC ON SALES(ProductCode);

Refer: http://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server for details.

Solution 6 - Sql

  1. CREATE INDEX name_index ON Employee (Employee_Name)

  2. On a multi column: CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)

Solution 7 - Sql

Since most of the answers are given for SQL databases, I am writing this for NOSQL databases, specifically for MongoDB.

Below is the syntax to create an index in the MongoDB using mongo shell.

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

example - db.collection.createIndex( { name: -1 } )

In the above example an single key descending index is created on the name field.

Keep in mind MongoDB indexes uses B-tree data structure.

There are multiple types of indexes we can create in mongodb, for more information refer to below link - https://docs.mongodb.com/manual/indexes/

Solution 8 - Sql

An index is not always needed for all the databases. For eg: Kognitio aka WX2 engine doesn't offer a syntax for indexing as the database engine takes care of it implicitly. Data goes on via round-robin partitioning and Kognitio WX2 gets data on and off disk in the simplest possible way.

Solution 9 - Sql

We can use following syntax to create index.

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

If we do not want duplicate value to be allowed then we can add UNIQUE while creating index as follow

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

We can create index on multiple column by giving multiple column name separated by ','

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionXenph YanView Question on Stackoverflow
Solution 1 - SqlJohn DowneyView Answer on Stackoverflow
Solution 2 - SqlEric Z BeardView Answer on Stackoverflow
Solution 3 - SqltdcView Answer on Stackoverflow
Solution 4 - SqlDavid ManheimView Answer on Stackoverflow
Solution 5 - SqlSharvariView Answer on Stackoverflow
Solution 6 - SqlLooking_for_answersView Answer on Stackoverflow
Solution 7 - SqlmdeoraView Answer on Stackoverflow
Solution 8 - SqlSriniVView Answer on Stackoverflow
Solution 9 - Sqlkrishna kirtiView Answer on Stackoverflow