Sin un índice, un equipo debe leer cada registro de una tabla hasta que localice uno que coincida con un criterio. Por ejemplo , un minorista en línea tiene una tabla de base de datos con 100.000 clientes. Cuando Joe Smith inicia la sesión con su ID de cliente , el equipo tendría que leer decenas de miles de registros hasta que se encuentra el suyo. Por sí misma , la operación tarda unos segundos , multiplicado por miles de clientes , esto se convierte en horas de procesamiento adicional . Un índice almacena sólo los ID de cliente en un archivo separado organizado para un acceso rápido . DB2 localiza la deseada posición de registro en el archivo después de leer algunos registros de índice , con el número de posición , recupera el registro de la tabla principal directamente . El uso de un índice, DB2 encuentra un record en unas pocas milésimas de segundo, en gran medida acelerar muchas tareas de base de datos .
Igualdad y desigualdad
Un programa típico utiliza una igualdad para recuperar un registro indizado de una tabla DB2, tal como el siguiente código SQL ilustra :
SELECT nombre-cliente , dirección, ciudad, estado FROM Clientes WHERE customer_id = '51412 ' ;
la cláusula WHERE la instrucción SELECT es igual al campo customer_id a un valor de identificación de cliente . En ocasiones, es posible que desee ver los registros con una serie de valores , como en la siguiente sentencia SQL : SELECT
-cliente , dirección, ciudad, estado FROM Clientes WHERE customer_id > = '51400 ' ;
< p > Aquí , la declaración tira muchos registros de la base de datos , empezando por el que tiene un ID de cliente mayor que o igual a 51.400 . El uso de la mayor o igual a símbolo es un ejemplo de una desigualdad . Aunque una igualdad recupera registros que coincidan con un valor único, una desigualdad permite obtener las fichas de mayor o menor valor.
El operador LIKE
DB2 utiliza el índice de una tabla donde posible, aunque depende de la instrucción SQL WHERE cláusula. Si la declaración desigualdades , DB2 puede utilizar el índice , pero la eficiencia puede sufrir . El operador LIKE muestra cómo funciona el índice en diferentes situaciones, en efecto, la creación de desigualdades con sus caracteres comodín " %" y la sentencia SQL más eficiente selecciona una sola serie , sin interrupciones, como muestra el siguiente SQL " _ . "
SELECT nombre-cliente , dirección, ciudad, estado FROM Clientes WHERE customer_id LIKE '514 % ' ;
la declaración busca todos los registros que tienen customer_IDs comienzan con DB2 busca el primer registro que cumple este criterio " 514. " , recupera todos los registros posteriores que coinciden, entonces se detiene . La siguiente sentencia SQL es menos eficiente :
SELECT nombre-cliente , dirección, ciudad, estado FROM Clientes WHERE customer_id LIKE ' _1400 ' ;
Aquí, el carácter comodín "_ " especifica todos los ID de cliente que terminar con " 1400 ", pero que comienza con cualquier número . DB2 debe buscar la mayor parte del índice, la búsqueda de todos los identificadores que comienzan con " 1", " 2 " y así sucesivamente hasta el final de la tabla . El índice ahorra menos tiempo en esta situación.
Multi -Field índices
cláusulas WHERE de muchas sentencias SELECT especifica varios campos. Para mejorar la velocidad de estos Selecciona, un índice puede acomodar a más de un campo . Por ejemplo, el siguiente SQL busca registros utilizando una combinación de las operaciones de la igualdad y la desigualdad :
SELECT nombre-cliente , dirección, ciudad, estado FROM Clientes WHERE estado = 'IL ' Y zip_code > = '60600 ' ;
Si suele recuperar datos utilizando los mismos campos y criterios , crear un nuevo índice que combina los campos. Para un mejor rendimiento , coloque los campos de la igualdad en el índice en primer lugar, seguido de los campos de la desigualdad .