none
Select Dinâmico RRS feed

  • Pergunta

  • Olá Pessoal, Bom Dia! 

    Como Funciona um SQL Dinâmico?

    Posso, através dele conseguir aumentar o desempenho de um Select com Vários Join´s???
    sábado, 10 de outubro de 2009 14:25

Respostas

  • Boa Noite,

    O SQL dinâmico é a capacidade de você montar no próprio SGBD uma instrução SQL em tempo de execução. Ex:

    DECLARE @cmdSQL VARCHAR(200), @Tabela VARCHAR(100)
    SET @Tabela = 'Clientes'
    SET @cmdSQL = 'SELECT * FROM ' + @Tabela
    EXEC (@cmdSQL) -- É possível fazer com a sp_executesql

    O uso do SQL dinâmico é indicado para criação de comandos SQL muito variáveis, quando a montagem do comando em si pode representar várias combinações de campos, filtros, tabelas, etc. Você deve adicionalmente colocar controles adicionais, para impedir o ataque via SQL Injection, já que instruções serão montadas dinamicamente.

    Ele não representa melhorias em termos de desempenho. Se você possui vários JOINs e deseja melhorar o desempenho, sugiro verificar os seguintes pontos:

    - Certifique-se de que suas consultas SQL estão utilizando apenas as tabelas necessárias
    - Evite instruções do tipo SELECT * FROM
    - Verifique se os JOINs estão utilizando as colunas corretas no ON
    - Considere o uso de desnormalização
    - Considere o uso de Views Indexadas (ou materializadas)
    - Considere o uso de tabelas de sumarização que não sejam atualizadas Real Time

    [ ]s,
     
    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Hash Indexes – Uma implementação no SQL Server – Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!750.entry


    Classifique as respostas. O seu feedback é imprescindível
    domingo, 11 de outubro de 2009 03:55

Todas as Respostas

  • Denison,

    SQL dinâmico é uma forma de você utilizar os recurso do Select de forma personalizada, onde através de suas aplicações você poderá possibilitar aos seus usuários pesquisar, agrupar, ordenar os dados que serão retornados em sua query da forma desejada.

    Mas isso não representa que você poderá aumentar o desempenho do select, a utilização de Joins pode ou não aumentar a performance.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sábado, 10 de outubro de 2009 20:13
  • Boa Noite,

    O SQL dinâmico é a capacidade de você montar no próprio SGBD uma instrução SQL em tempo de execução. Ex:

    DECLARE @cmdSQL VARCHAR(200), @Tabela VARCHAR(100)
    SET @Tabela = 'Clientes'
    SET @cmdSQL = 'SELECT * FROM ' + @Tabela
    EXEC (@cmdSQL) -- É possível fazer com a sp_executesql

    O uso do SQL dinâmico é indicado para criação de comandos SQL muito variáveis, quando a montagem do comando em si pode representar várias combinações de campos, filtros, tabelas, etc. Você deve adicionalmente colocar controles adicionais, para impedir o ataque via SQL Injection, já que instruções serão montadas dinamicamente.

    Ele não representa melhorias em termos de desempenho. Se você possui vários JOINs e deseja melhorar o desempenho, sugiro verificar os seguintes pontos:

    - Certifique-se de que suas consultas SQL estão utilizando apenas as tabelas necessárias
    - Evite instruções do tipo SELECT * FROM
    - Verifique se os JOINs estão utilizando as colunas corretas no ON
    - Considere o uso de desnormalização
    - Considere o uso de Views Indexadas (ou materializadas)
    - Considere o uso de tabelas de sumarização que não sejam atualizadas Real Time

    [ ]s,
     
    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Hash Indexes – Uma implementação no SQL Server – Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!750.entry


    Classifique as respostas. O seu feedback é imprescindível
    domingo, 11 de outubro de 2009 03:55