Controlar el orden de las operaciones en una consulta SQL
Al ejecutar consultas SQL, es importante entender y administrar el orden en que se evalúan las cláusulas para poder producir los resultados previstos.
En este escenario, imagine que está trabajando con una base de datos global de información demográfica y desea buscar todas las ciudades de China que tengan al menos 100.000 habitantes o que sean capitales de provincia.
Cláusulas de agrupación y desagrupación
En una consulta con varias cláusulas, puede agrupar y desagrupar cláusulas para controlar el orden de las operaciones. Para agrupar dos o más cláusulas, pulse la tecla Mayús mientras hace clic en las cláusulas para seleccionarlas y haga clic en Agrupar cláusulas
. Para desagrupar cláusulas, seleccione una cláusula de un grupo y haga clic en Desagrupar cláusulas
.
Los dos ejemplos a continuación son de la misma consulta. En el primer ejemplo, no se utilizar la agrupación de cláusulas y los resultados obtenidos no son los previstos. En el segundo ejemplo, las cláusulas se agrupan para que el orden correcto de las operaciones devuelva los resultados previstos.
Cláusulas desagrupadas
Al ejecutar esta consulta desagrupada, primero encuentra todas las ciudades de China y después filtra las ciudades chinas con más de 100.000 habitantes. A continuación, según el operador Or, evalúa todo el dataset para devolver capitales de provincia. Los resultados finales son ciudades chinas con más de 100.000 habitantes y cualquier ciudad del mundo que sea capital de provincia, lo cual no es el resultado deseado. Esto se debe a que el operador And tiene prioridad sobre el operador Or, por lo que And se evalúa en primer lugar.

Cláusulas agrupadas
En este segundo ejemplo, para obtener los resultados deseados, el operador Or se debe evaluar primero. Puede agrupar las cláusulas para imponer el orden de las operaciones. Las cláusulas de un grupo se evalúan antes que las cláusulas que están fuera del grupo.

Cuando se aplica la agrupación, la consulta evalúa primero las cláusulas del grupo: si la ciudad tiene al menos 100.000 habitantes o si se trata de una capital de provincia. Después, evalúa si es una ciudad de China. A continuación, el operador And se asegura de que la consulta devuelva correctamente las ciudades que cumplen los dos criterios: ciudades chinas de al menos 100.000 habitantes o que sean capitales de provincia.
Agrupar las cláusulas equivale a incluirlas entre paréntesis. En el modo SQL Editor, la consulta tiene este aspecto:
CNTRY_NAME = 'China' And (POP > 100000 Or STATUS = 'Provincial capital')
Priorizar cláusulas de atributos
Cuando se realiza una consulta en una clase de entidad de una geodatabase corporativa, el cliente (ArcGIS Pro) accede a la base de datos mediante la consulta SQL, la ejecuta en el origen de datos de la base de datos y devuelve un resultado. Mientras trabaja con la vista de mapa, puede elegir entre ejecutar la cláusula espacial como parte de la consulta realizada sobre la clase de entidad en la base de datos (opción predeterminada) o retrasar su ejecución en el cliente hasta que se hayan procesado las cláusulas de atributos de la consulta. En el modo de edición de consultas, haga clic en el icono del menú
y marque la opción Priorizar cláusulas de atributos para aplicar la cláusula espacial en el cliente después de que la base de datos filtre las entidades. Esto puede mejorar el rendimiento del dibujo.
Nota:
La opción solo está presente si el origen de datos de la capa es una clase de entidad de una geodatabase corporativa.