Banco de dados Relacional - Ordem de execução x Ordem de sintaxe
- #Banco de dados relacional
Olá! Seja bem-vindo(a) ao meu primeiro artigo sobre banco de dados, espero que goste do conteúdo.
Neste artigo vamos falar sobre a ordem de execução das consultas e a ordem correta da sintaxe de uma query em um banco de dados relacional, utilizando como exemplo o Microsoft SQL Server.
Sabe-se que a maioria das linguagens de programação segue uma abordagem sequencial, processando os códigos linha por linha. No entanto, em sistemas de gerenciamento de banco de dados, como o Microsoft SQL Server, a execução de consultas segue uma ordem de processamento lógica definida, que difere da simples leitura sequencial. Trata-se de uma linguagem “declarativa”, ou seja, ao escrever a consulta SQL, nós declaramos quais dados esperamos como resultado da consulta, mas não indicamos como obtê-los. Abaixo vamos analisar a diferença entre a ordem correta da sintaxe e a ordem lógica de processamento de uma query.
ORDEM DE SINTAXE x ORDEM LÓGICA DE PROCESSAMENTO
Embora o otimizador de querys determine uma ordem lógica de execução das operações, a ordem de sintaxe é a estrutura gramatical correta que deve ser seguida para escrever uma consulta SQL válida.
ORDEM DE SINTAXE
A ordem que uma consulta SQL deve respeitar para que o comando seja válido.
8 - SELECT
9 - DISTINCT
11 - TOP
1 - FROM
2 - ON
3 - JOIN
4 - WHERE
5 - GROUP BY
6 - WITH CUBE OU WITH ROLLUP
7 - HAVING
10 - ORDER BY
ORDEM LÓGICA DE PROCESSAMENTO
É a sequência em que as operações da consulta são executadas pelo otimizador de querys para obter o resultado desejado. A sequência lógica é a seguinte:
1 - FROM
2 - ON
3 - JOIN
4 - WHERE
5 - GROUP BY
6 - WITH CUBE OU WITH ROLLUP
7 - HAVING
8 - SELECT
9 - DISTINCT
10 - ORDER BY
11 – TOP
Vale lembrar: A sequência citada anteriormente geralmente é verdadeira, no entanto, existem casos incomuns em que a sequência pode ser diferente.
Como por exemplo, o uso de índices, dependendo da sua disponibilidade e seletividade, o otimizador pode executar uma consulta primeiro no índice e, em seguida, acessar as tabelas de dados relevantes na consulta. Podem haver casos semelhantes ao realizar Joins, Subconsultas e outros casos.
É importante observar que esses desvios na ordem de execução são determinados pelo otimizador de consultas do SQL Server, onde o objetivo é obter o plano de execução mais eficiente para a consulta.
Agradeço por ler até aqui e espero que você tenha aproveitado o conteúdo. Se você gostou do artigo, curta, comente e compartilhe com seus amigos, para que mais pessoas possam aproveitar essa leitura. Obrigado pelo seu tempo!
fontes: https://www.cadcobol.com.br/sql_order_of_operations.htm | https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=sql-server-ver16