sql - unico - tipos de indices en base de datos
¿Cómo indizo una columna de base de datos? (9)
-
CREATE INDEX name_index ON Employee (Employee_Name)
-
En una columna múltiple:
CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)
Con suerte, puedo obtener respuestas para cada servidor de base de datos.
Para obtener un resumen de cómo funciona la indexación, consulte: ¿Cómo funciona la indexación de la base de datos?
Como la mayoría de las respuestas se dan para bases de datos SQL, estoy escribiendo esto para bases de datos NOSQL, específicamente para MongoDB.
A continuación se muestra la sintaxis para crear un índice en MongoDB usando el shell mongo.
db.collection.createIndex( <key and index type specification>, <options> )
ejemplo:
db.collection.createIndex( { name: -1 } )
En el ejemplo anterior, se crea un índice descendente de clave única en el campo de nombre.
Tenga en cuenta que los índices MongoDB utilizan la estructura de datos del árbol B.
Hay varios tipos de índices que podemos crear en mongodb, para obtener más información, consulte el siguiente enlace: https://docs.mongodb.com/manual/indexes/
El siguiente es el estándar SQL92, por lo que debería ser compatible con la mayoría de RDMBS que usan SQL:
CREATE INDEX [index name] ON [table name] ( [column name] )
En SQL Server, puede hacer lo siguiente: ( Enlace de MSDN a la lista completa de opciones).
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON <object> ( column [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WHERE <filter_predicate> ]
(ignorando algunas opciones más avanzadas ...)
El nombre de cada índice debe ser único en toda la base de datos.
Todos los índices pueden tener múltiples columnas, y cada columna se puede ordenar en el orden que desee.
Los índices agrupados son únicos, uno por tabla.
No pueden tener columnas
INCLUDE
d.
Los índices no agrupados no son únicos y pueden tener hasta 999 por tabla. Pueden haber incluido columnas y cláusulas where.
No siempre se necesita un índice para todas las bases de datos. Por ejemplo: el motor Kognitio, también conocido como WX2, no ofrece una sintaxis para la indexación, ya que el motor de la base de datos se encarga de ello implícitamente. Los datos continúan a través del particionamiento round-robin y Kognitio WX2 obtiene datos dentro y fuera del disco de la manera más simple posible.
Para crear índices se pueden usar los siguientes elementos:
-
Crea un índice en una tabla. Se permiten valores duplicados:
CREATE INDEX index_name ON table_name (column_name)
-
Crea un índice único en una tabla. No se permiten valores duplicados:
CREATE UNIQUE INDEX index_name ON table_name (column_name)
-
Índice
CREATE CLUSTERED INDEX CL_ID ON SALES(ID);
:CREATE CLUSTERED INDEX CL_ID ON SALES(ID);
-
Índice no agrupado:
CREATE NONCLUSTERED INDEX NONCI_PC ON SALES(ProductCode);
Consulte: http://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server para más detalles.
Para python pytables, los índices no tienen nombres y están vinculados a columnas individuales:
tables.columns.column_name.createIndex()
Podemos usar la siguiente sintaxis para crear el índice.
CREATE INDEX <index_name> ON <table_name>(<column_name>)
Si no queremos que se permita el valor duplicado, entonces podemos agregar UNIQUE mientras creamos el índice de la siguiente manera
CREATE UNIQUE INDEX <index_name> ON <table_name>(<column_name>)
Podemos crear índices en columnas múltiples dando nombres de columnas múltiples separados por '' , ''
Sql Server 2005
le brinda la capacidad de especificar un índice de cobertura.
Este es un índice que incluye datos de otras columnas a nivel de hoja, por lo que no tiene que volver a la tabla para obtener columnas que no están incluidas en las claves de índice.
create nonclustered index my_idx on my_table (my_col1 asc, my_col2 asc) include (my_col3);
Esto es invaluable para una consulta que tiene
my_col3
en la lista de selección y
my_col1
y
my_col2
en la cláusula where.