Tecnología

Inicio

DB2 y Desigualdad usos del Índice

DB2 y Desigualdad usos del Índice


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 utilizar un índice para recuperar un registro específico de una tabla de base de datos; Sin embargo, DB2 le permite localizar varios registros que representan un rango. En este último caso, se crea una declaración de lenguaje de consulta estructurado que utiliza las desigualdades tales como mayor o menor que.

¿Por qué utilizar un índice?

Sin un índice, un equipo debe leer cada registro de una tabla hasta que se localiza uno que coincida con un criterio. Por ejemplo, un minorista en línea tiene una tabla de base de datos que contiene 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 la de él. Por sí misma, la operación tarda unos segundos; multiplicada 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 organizada para un acceso rápido. DB2 localiza la posición del registro deseado en el archivo después de leer un par de 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 registro en unas pocas milésimas de segundo, gran medida la aceleración muchas tareas de base de datos.

Igualdad y desigualdad

Un programa típico utiliza una igualdad para recuperar un registro indizado de una tabla de DB2, como ilustra el siguiente código SQL:

-cliente SELECT, dirección, ciudad, estado DESDE DONDE clientes Customer_Id = '51412';

La cláusula WHERE en la instrucción SELECT equipara el campo Customer_Id a un valor de ID de cliente. De vez en cuando, es posible que desee ver los registros con un rango de valores, como en la siguiente instrucción SQL:

-cliente SELECT, dirección, ciudad, estado DESDE DONDE clientes Customer_Id> = '51400';

Aquí, la declaración tira muchos registros de la base de datos, a partir de la que tiene un ID de cliente mayor que o igual a 51400. El uso de la mayor o igual que el símbolo es un ejemplo de una desigualdad. Aunque una igualdad recupera registros que coinciden con un valor único, una desigualdad busca los registros de mayor o menor valor.

Al igual que el operador

DB2 utiliza el índice de una tabla siempre que sea posible, aunque depende de cláusula WHERE de la instrucción SQL. Si la instrucción tiene desigualdades, DB2 puede utilizar el índice, pero la eficiencia puede sufrir. El operador LIKE ilustra cómo el índice trabaja en diferentes situaciones, creando de hecho las desigualdades con sus caracteres comodín "%" y "_". La sentencia SQL más eficiente selecciona una única serie y sin interrupciones, como el SQL siguiente muestra:

SELECT nombre-cliente, dirección, ciudad, estado DESDE DONDE clientes Customer_Id COMO '514%';

La declaración busca todos los registros que tienen customer_IDs que comienza por "514" DB2 encuentra el primer registro que cumpla este criterio, recupera todos los registros posteriores que responden, a continuación, se detiene. La siguiente instrucción SQL es menos eficiente:

SELECT nombre-cliente, dirección, ciudad, estado DESDE DONDE clientes Customer_Id COMO '_1400';

En este caso, el carácter comodín "_" especifica todos los ID de cliente que terminan 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.

Los índices de campos múltiples

Las cláusulas WHERE de muchas instrucciones SELECT especifican múltiples campos. Para mejorar la velocidad de estos SELECTs, un índice puede acomodar a más de un campo. Por ejemplo, el siguiente código SQL busca registros que utilizan una combinación de operaciones de igualdad y desigualdad:

-cliente SELECT, dirección, ciudad, estado FROM clientes DONDE estado = 'IL' Y zip_code> = '60600';

Si a menudo recuperar datos utilizando los mismos campos y criterios, crear un nuevo índice que combina los campos. Para obtener la eficiencia, poner los campos de igualdad en el índice primero, seguidos por los campos de desigualdad.