Digamos que en la tabla de empleados, he creado un índice(idx_name) en el emp_name columna de la tabla.

Necesito para especificar explícitamente el nombre del índice en la cláusula select o se utilizan de forma automática para acelerar las consultas.

Si es requerido para ser especificado en la cláusula select, ¿Cuál es la sintaxis para el uso de índices en la consulta de selección ?

InformationsquelleAutor Vivek | 2011-07-06

8 Comentarios

  1. 79

    Si quieres probar el índice para ver si funciona, esta es la sintaxis:

    SELECT *
    FROM Table WITH(INDEX(Index_Name))

    CON la declaración de voluntad de la fuerza que el índice se utiliza.

    • Este post no responde a la pregunta. La respuesta es, en pocas palabras: usted no tiene que especificar un índice de consulta. Se utiliza (o no) automágicamente. Usted puede forzar, sin embargo. Más detalles (cuándo y por qué hacerlo) en otros puestos de abajo.
  2. 33

    Buena pregunta,

    Generalmente el motor de base de datos debe seleccionar automáticamente el índice a utilizar en función de los planes de ejecución de consultas se construye. Sin embargo, hay algunos muy raros los casos cuando se quiere a fuerza de la DB para el uso de un índice específico.

    A ser capaz de responder a su pregunta específica que usted tiene que especificar la base de datos que está utilizando.

    Para MySQL, usted desea leer el Sugerencia De Índice De Sintaxis documentación sobre cómo hacer esto

  3. 27

    Cómo utilizar el índice de la instrucción select?
    esta manera:

       SELECT * FROM table1 USE INDEX (col1_index,col2_index)
        WHERE col1=1 AND col2=2 AND col3=3;

    SELECT * FROM table1 IGNORE INDEX (col3_index)
    WHERE col1=1 AND col2=2 AND col3=3;

    SELECT * FROM t1 USE INDEX (i1) IGNORE INDEX (i2) USE INDEX (i2);

    Y muchas más formas de verificación este

    Necesito para especificar de forma explícita?

    • No, no hay Necesidad de especificar de forma explícita.
    • Motor de base de datos debe seleccionar automáticamente el índice a utilizar en función de los planes de ejecución de consultas que se construye a partir de @Tudor Constantin respuesta.
    • El optimizador de juzgar si el uso de su índice va a hacer tu consulta a correr más rápido, y si es así, se utilizará el índice. desde @niktrl respuesta
  4. 13

    En general, el índice se utiliza si la asume el costo de usar el índice, y luego, posiblemente, tener que realizar más búsquedas de marcador es menor que el costo de escaneado de toda la tabla.

    Si su consulta es de la forma:

    SELECT Name from Table where Name = 'Boris'

    Y 1 fila de 1000 tiene el nombre Boris, es casi seguro que sea utilizado. Si todo el mundo el nombre es Boris, es probable que recurrir a un examen de la tabla, ya que el índice es poco probable que sea más eficiente la estrategia de acceso a los datos.

    Si es una tabla ancha (muchas de las columnas) y que debe hacer:

    SELECT * from Table where Name = 'Boris'

    Todavía puede optar por realizar el examen de la tabla, si es una suposición razonable de que va a tomar más tiempo de recuperación de las otras columnas de la tabla de lo que será, solo tienes que buscar el nombre, o más, si es probable que la recuperación de una gran cantidad de filas de todos modos.

  5. 9

    El optimizador de juzgar si el uso de su índice va a hacer tu consulta a correr más rápido, y si es así, se utilizará el índice.

    Dependiendo de su RDBMS puede forzar el uso de un índice, aunque no es recomendable a menos que usted sepa lo que está haciendo.

    En general, debe columnas de índice que se utilice en la tabla de la combinación y donde las declaraciones

  6. 5

    Por lo general, cuando se crea un índice en una tabla de la base de datos automáticamente el uso de dicho índice, mientras que la búsqueda de datos en la tabla. Usted no necesita hacer nada acerca de eso.

    Sin embargo, en MSSQL, puede especificar un index hint que puede especificar que un determinado índice debe ser usado para ejecutar esta consulta. Más información sobre esto se puede encontrar aquí.

    Index hint también parece estar disponible para MySQL. Gracias a Tudor Constantino.

  7. 3

    Mediante el uso de la columna en la que el índice se aplica dentro de sus condiciones, será incluido automáticamente. Usted no tiene que usarlo, pero va a acelerar las consultas cuando se utiliza.

    SELECT * FROM TABLE WHERE attribute = 'value'

    Utilizará el índice apropiado.

  8. 1

    La sugerencia de índice sólo está disponible para Microsoft Dynamics servidores de base de datos.
    Para tradicional de SQL Server, los filtros se define en el «Donde» la cláusula debe persuadir al motor para uso pertinente de los índices de…
    Siempre que el motor de ejecución del plan de manera eficiente puede identificar cómo leer la información (ya sea un análisis completo de la tabla o un índice de digitalización) – debe comparar los dos antes de ejecutar la instrucción adecuada, como parte de su rendimiento integrado en el optimizador.

    Sin embargo, puede forzar el optimizador de conversiones para escanear mediante el uso de algo como

        Select  *
        From    [yourtable] With (Index(0))
        Where   ...

    O la búsqueda de un índice en particular mediante el uso de algo como

        Select  *
        From    [yourtable] With (Index(1))
        Where   ...

    La elección es suya. Buscar en el índice de la tabla de propiedades en el panel objeto de tener una idea de índice que desea utilizar. Debe coincidir con el filtro(s).

    Para obtener los mejores resultados, la lista de los filtros que iba a devolver el menor número de resultados de la primera.
    No sé si estoy en lo correcto en decir, pero parece que los filtros de consulta son secuenciales; si usted recibe su secuencia de derecho, el optimizador no debería tener que hacerlo por usted mediante la comparación de todas las combinaciones, o al menos no de comenzar la comparación con el más caro de consultas.

Dejar respuesta

Please enter your comment!
Please enter your name here