› Fóruns › SQL e PL/SQL › Comandos SQL avançados › Comandos SQL avançados
[quote=”burga”:1q2dh1wt]Existem mais alguns que a gente vê pouco, mas que podem ser bastante úteis, alguns dos abaixo são bastante conhecidos por DBA’s mas pouco utilizados pelos desenvolvedores. Segue uma listinha:[/quote]
Infelizmente pouco utilizados. Lembrando daquele tópico um dia desses, desenvolvedor XGH (Extreme Go-Horse) é chegado mesmo é num “UNION ALL” ou “CURSOR FOR LOOP”.
Curioso que tantas pessoas se esforcem tanto para aprender linguagens como Java, C, Perl (entre outras, inclusive PL/SQL) mas continuem deixando o gargalo de suas aplicações no banco de dados por utilizarem mal o BD ao escreverem SQLs, que é uma linguagem declarativa, fácil de entender e debugar, além de muito eficiente e rápida.
Depois se coloca a culpa no Oracle, chama de lento e ameaça trocar pelo Postgres ou MySQL por serem “grátis”. Claro, para que ter uma Ferrari se o motorista anda com o freio de mão puxado?
A grande sacada de usar funcionalidades avançadas de SQL é o ganho enorme de desempenho que se tem, pois a computação é toda feita no banco de dados, reduzindo I/O desnecessário em leitura de disco, tráfego de rede, consumo de memória e overhead com chaveamento de contexto entre as SQL e PL/SQL engines (ou Java, .NET, etc).
Quanto a que estudar, eu sugiro analytic SQL functions, que na minha opinião mudam a forma da gente entender e escrever queries.
http://download.oracle.com/docs/cd/E118 … ons004.htm
Destaque para as funções abaixo que penso que são as mais úteis no dia-a-dia:
AVG
COUNT
DENSE_RANK
FIRST
FIRST_VALUE
LAG
LAST
LAST_VALUE
LEAD
MAX
MIN
NTH_VALUE
NTILE
PERCENT_RANK
RANK
ROW_NUMBER
SUM
Não confundir AVG, SUM, MAX, MIN e COUNT com as funções de agregação comuns. SQL analítico produz um resultado por linha sem agregar (windowing / janela móvel).
Também recomendo uma leitura na cláusula MODEL, que possibilita alguns cálculos semelhantes ao que é feito em planilhas Excel.
http://download.oracle.com/docs/cd/E118 … lmodel.htm
Abraço,
Francisco.