Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Antes de discutir as técnicas para usar SQL programáticamente, é necessário discutir como uma instrução SQL é processada. Os passos envolvidos são comuns às três técnicas, embora cada técnica os execute em momentos diferentes. A ilustração seguinte mostra os passos envolvidos no processamento de uma instrução SQL, que são discutidos ao longo do resto desta secção.
Para processar uma instrução SQL, um SGBD executa os seguintes cinco passos:
O SGBD analisa primeiro a instrução SQL. Divide a afirmação em palavras individuais, chamadas tokens, garante que a afirmação tem um verbo válido e orações válidas, e assim sucessivamente. Erros de sintaxe e ortografia podem ser detetados nesta etapa.
O SGBD valida a declaração. Verifica a declaração em relação ao catálogo do sistema. Todas as tabelas mencionadas na instrução existem na base de dados? Todas as colunas existem e os nomes das colunas são inequívocos? O utilizador tem os privilégios necessários para executar a instrução? Certos erros semânticos podem ser detetados nesta etapa.
O SGBD gera um plano de acesso para a instrução. O plano de acesso é uma representação binária dos passos necessários para executar a instrução; é o equivalente DBMS ao código executável.
O SGBD otimiza o plano de acesso. Explora várias formas de executar o plano de acesso. Pode um índice ser usado para acelerar uma pesquisa? O SGBD deve primeiro aplicar uma condição de pesquisa à Tabela A e depois uni-la à Tabela B, ou deve começar pela união e usar a condição de pesquisa depois? Pode evitar-se uma pesquisa sequencial numa tabela ou reduzir-se a um subconjunto da tabela? Depois de explorar as alternativas, o SGBD escolhe uma delas.
O SGBD executa a instrução executando o plano de acesso.
Os passos usados para processar uma instrução SQL variam na quantidade de acesso necessário à base de dados e no tempo que demoram. Analisar uma instrução SQL não requer acesso à base de dados e pode ser feito muito rapidamente. A otimização, por outro lado, é um processo muito intensivo em CPU e requer acesso ao catálogo do sistema. Para uma consulta complexa e multitabela, o otimizador pode explorar milhares de formas diferentes de realizar a mesma consulta. No entanto, o custo de executar a consulta de forma ineficiente é geralmente tão elevado que o tempo gasto na otimização é mais do que recuperado com o aumento da velocidade de execução da consulta. Isto é ainda mais significativo se o mesmo plano de acesso otimizado puder ser usado repetidamente para realizar consultas repetitivas.