Selección de vía de acceso y predicados

Los predicados se encuentran en cláusulas WHERE, HAVING u ON de sentencias de SQL y describen atributos de datos.

Iniciar la información de la interfaz de programación específica del programa.Los predicados de una sentencia de SQL afectan a cómo Db2 selecciona la vía de acceso de la sentencia. Debido a que puede utilizar SQL para expresar la misma consulta de formas diferentes, conocer cómo afectan los predicados a la selección de la vía le ayudará a escribir consultas que accedan a los datos de forma eficaz.

La mayoría de los predicados se basan en las columnas de una tabla. Califican filas (mediante un índice) o rechazan filas (devueltas por una exploración) cuando se accede a una tabla. Las filas calificadas o rechazadas resultantes son independientes de la vía de acceso que se ha elegido para la tabla.

La consulta siguiente tiene tres predicados: un predicado de igualdad en C1, un predicado BETWEEN en C2 y un predicado LIKE en C3.

SELECT * FROM T1
  WHERE C1 = 10 AND
        C2 BETWEEN 10 AND 20 AND
        C3 NOT LIKE 'A%'

Los predicados de una cláusula HAVING no se utilizan cuando Db2 selecciona vías de acceso. El término predicado solo se refiere a predicados en cláusulas WHERE u ON. Los siguientes atributos de predicados influyen en la selección de vía de acceso:

  • El tipo de predicado, según su operador o sintaxis.
  • Si el predicado es indexable.
  • Si el predicado es de la etapa 1 o la etapa 2.
  • Si el predicado contiene una columna rowid.
  • Si el predicado forma parte de una cláusula ON.

Los términos siguientes se utilizan para diferenciar y clasificar determinados tipos de predicados:

Simple o compuesto
Un predicado compuesto es el resultado de dos predicados, ya sean simples o compuestos, conectados mediante los operadores booleanos AND u OR. Los demás son simples.
Local o de unión
Predicados locales hace referencia a una sola tabla. Son locales para la tabla y limitan el número de filas que se devuelve para esta tabla. Predicados de unión implican más de una tabla o referencia correlacionada. Determinan el modo en que se unen filas de dos o más tablas.
Término booleano
Cualquier predicado que no esté contenido en una estructura de predicados con OR compuestos es un término booleano. Si un término booleano se evalúa como falso para una fila determinada, toda la cláusula WHERE se evalúa como falsa para esta fila.

Predicados de la cláusula ON

La cláusula ON proporciona la condición de unión en una unión externa. Para una unión externa completa, la cláusula sólo puede utilizar predicados de igualdad. Para otras uniones externas, la cláusula puede utilizar cualquier predicado excepto los predicados que contengan subconsultas.

Para las uniones internas, los predicados de cláusula ON pueden proporcionar la condición de unión y el filtrado local y son semánticamente equivalentes a predicados de cláusula WHERE.

En una unión externa completa, la cláusula ON se evalúa durante la operación de unión como un predicado de la etapa 2.

En una unión externa, los predicados que se evalúan después de la unión son predicados de la etapa 2. Los predicados de una expresión de tabla se pueden evaluar antes de la unión y, por lo tanto, pueden ser predicados de la etapa 1.

Por ejemplo, en la siguiente sentencia, el predicado EDLEVEL > 100 se evalúa antes de la unión completa y es un predicado de etapa 1:

SELECT * FROM (SELECT * FROM DSN8C10.EMP
   WHERE EDLEVEL  > 100) AS X FULL JOIN DSN8C10.DEPT
      ON X.WORKDEPT  = DSN8C10.DEPT.DEPTNO;

Finalizar la información de la interfaz de programación específica del programa.