El sistema de gestión de base de datos DB2, al igual que con la mayoría de bases de datos relacionales , emplea archivos especiales llamados índices para acelerar las búsquedas de registros. La mayor parte del tiempo, los programas utilizan un índice para recuperar un registro específico de una tabla de base de datos , sin embargo , DB2 le permite localizar múltiples registros que representan un rango. En este último caso , se crea una declaración lenguaje de consulta estructurado que utiliza las desigualdades como mayor que o menor que. ¿Por qué utilizar un índice ?
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 .