2008-08-04 19 views
47

Espero que pueda obtener respuestas para cada servidor de base de datos.Cómo indexo una columna de base de datos

Para una descripción de cómo funciona la indexación Salida: How does database indexing work?

+0

Parece una pregunta que los documentos del servidor de bases de datos que podría estar utilizando responderían bien. Para Oracle: [http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/indexes003.htm](Oracle) –

+0

No recibí la página correcta cuando hice clic en el enlace de arriba para Oracle . Publicación del enlace correcto: http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm –

+4

Uno de los objetivos declarados de SO es aparecer primero en una búsqueda de Google. Muchas veces, una respuesta SO es mejor que los documentos mismos. ¿No sería valioso establecer una respuesta aquí como wiki de la comunidad para recopilar todas las respuestas? –

Respuesta

53

El siguiente es estándar SQL92 por lo que debe ser apoyado por la mayoría de RDMBS que utilizan SQL:

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

En la mayoría de los sistemas, esto también se puede usar para tener varias columnas, simplemente agregando una lista de nombres de columna separados por comas en lugar de una sola columna. –

6

SQL Server 2005 que la da capacidad de especificar un índice de cobertura. Este es un índice que incluye datos de otras columnas en el 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.

crear índice no agrupado my_idx en 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.

4

Para PyTables pitón, los índices no tienen nombres y que están vinculados a las columnas individuales:

tables.columns.column_name.createIndex() 
4

En SQL Server, puede hacer lo siguiente: (. MSDN Link 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 amplia base de datos única.

Todos los índices pueden tener varias columnas, y cada columna se puede pedir en el orden que desee.

Los índices agrupados son únicos, uno por tabla. No pueden tener INCLUDE d columnas.

Los índices no agrupados no son únicos y pueden tener hasta 999 por tabla. Pueden haber incluido columnas y cláusulas where.

2

para crear índices siguientes cosas pueden ser utilizados:

  1. Crea un índice en una tabla. se permiten valores duplicados:

    CREATE INDEX index_name EN nombre_tabla (COLUMN_NAME)

  2. crea un índice único en una tabla.Los valores duplicados no están permitidos:

    CREATE UNIQUE INDEX index_name EN nombre_tabla (COLUMN_NAME)

  3. índice agrupado

    CREATE CLUSTERED ÍNDICE CL_ID EN VENTAS (ID);

  4. índice no agrupado

    CREATE NONCLUSTERED ÍNDICE NONCI_PC de las ventas (ProductCode);

consulte http://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server para más detalles.

1

1.

CREATE INDEX name_index ON Employee (Employee_Name) 
  1. en una columna de múltiples

    CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age) 
    
0

Sólo debe indexar las columnas sobre las que se realiza una búsqueda frecuente/consultas.

Supongamos que tiene una tabla llamada Estudiantes donde almacena ID de alumno, Nombre, Curso, Grado etc. Y necesita buscar con frecuencia la columna ID de alumno para obtener información sobre estudiantes específicos.

SELECT Name, Course, Grade 

FROM Students 

WHERE StudentID = 111025 

Debe crear un índice en esa columna, ya que acelerará el proceso de búsqueda. Puede crear un índice en una columna existente con el siguiente código:

CREATE INDEX IndexStudentID 

ON Students (StudentID) 

El nombre IndexStudentID puede ser cualquier cosa, elegir algo que tenga sentido para usted.

Sin embargo, crear un índice agregará algunos gastos generales a su base de datos. Hay muchas herramientas que pueden ayudar, por ejemplo, estoy usando SQLDbm ya que me conviene más.

Cuestiones relacionadas