Pular para o conteúdo

Fóruns SQL e PL/SQL Comandos SQL avançados Comandos SQL avançados

#92376
fsitja
Participante

    [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.