TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Boas_praticas_de_programacao_transact_sql

Por:   •  14/5/2015  •  Artigo  •  6.973 Palavras (28 Páginas)  •  154 Visualizações

Página 1 de 28

[pic 1][pic 2][pic 3]

BOAS PRÁTICAS DE

PROGRAMAÇÃO

[pic 4]

TRANSACT-SQL

Versão 01.04.00

[pic 5]

Salvador (Ba), outubro de 2012


CONTROLE DE VERSÃO

Versão

Data

Responsável

Histórico

01.01.00

29/12/2006

Equipe AD (Padrões)

  1. Substituição de “Departamento” por “Diretoria” no cabeçalho;
  2. Padronização da capa;
  3. Transferência do Manual de Padrões Banco para o Manual de Boas Práticas de Programação SQL do conteúdo que provê orientações sobre quando e como utilizar as views de linked server;
  4. Criação do tópico “TABELAS DE HISTÓRICO” e inclusão neste tópico da recomendação para armazenar as datas de início e fim de vigência nas tabelas de histórico, quando fizer sentido.

01.02.00

15/01/2009

Equipe AD (Padrões)

  1. Incluir conteúdo relacionado aos recursos do SQL Server 2005 (Tabelas Particionadas, Novos Tipos de Dados, Service Broker, Campos XML).

01.03.00

18/04/2011

Equipe AD (Padrões)

1. Inclusão do item “Controle de Execução de Scripts” no tópico “OBSERVAÇÕES”.

01.04.00

01/10/2012

Equipe AD (Padrões)

1. Inclusão do item “SET NOCOUNT ON” no tópico “OBSERVAÇÕES”.


ÍNDICE

1.        OBJETIVO        

2.        TABELAS TEMPORÁRIAS        

3.        TRANSAÇÕES        

4.        ÍNDICES        

5.        PLANOS DE EXECUÇÃO        

6.        VISÕES        

7.        VERTICALIZAÇÃO DE TABELAS        

8.        FUNÇÕES DEFINIDAS PELO USUÁRIO        

9.        REFERÊNCIA CRUZADA        

10.        TABELAS DE HISTÓRICO        

11.        TABELAS PARTICIONADAS        

12.        NOVOS TIPOS DE DADOS DO SQLSERVER 2005        

13.        SERVICE BROKER        

14.        CAMPOS  XML        

15.        OBSERVAÇÕES        

16.        CONCLUSÃO        

17.        REFERÊNCIAS        


  1. OBJETIVO

Este documento reúne um conjunto de técnicas de programação em Transact-SQL que devem ser adotadas para  garantir um bom desempenho das aplicações no ambiente SEFAZ.

  1. TABELAS TEMPORÁRIAS

Recomendação: Não utilizar tabela temporária em estado de transação.

Quando uma tabela temporária é construída, são gerados bloqueios em tabelas do catálogo (sysobjects, sysindexes e syscolumns) no TEMPDB. O TEMPDB é um banco compartilhado por todos os usuários de um servidor SQL Server e é um recurso extremamente utilizado na geração de tabelas temporárias, cursores, etc. Se uma tabela temporária for criada em estado de transação, os bloqueios serão mantidos até o final da transação, bloqueando outros usuários e comprometendo a performance do servidor.

Tabelas temporárias podem ser substituídas por joins ou por  tabelas derivadas em grande parte das situações, evitando os bloqueios no TEMPDB e melhorando a performance das aplicações. Seguem alguns exemplos de substituição de tabelas temporárias por joins e tabelas derivadas:

Com tabelas temporárias:

(solução não recomendada)

CREATE TABLE #tipo_operacao (

        cod_operacao        int                not null,

        des_operacao        char(20)        not null

)[pic 6]

INSERT INTO #tipo_operacao

SELECT * FROM tipo_operacao

WHERE cod_operacao > 10

SELECT * 

FROM operacao O INNER JOIN #tipo_operacao TO

ON (O.cod_operacao = TO.cod_operacao)

DROP TABLE #tipo_operacao

Com JOIN:

(solução recomendada)

SELECT cod_operacao, des_operacao [pic 7]

FROM operacao O INNER JOIN tipo_operacao TO

ON (O.cod_operacao = TO.cod_operacao)

WHERE TO.cod_operacao > 10

A seguir, analisaremos um exemplo mais trabalhado, semelhante à geração de relatórios. Neste exemplo, a solução apresentada é o uso de uma tabela derivada que nada mais é do que  a substituição de uma tabela na cláusula FROM por uma consulta. O exemplo abaixo, assim como outros exemplos e tópicos abordados podem ser encontrados no site

http://www.sql-server-performance.com

 

Com tabelas temporárias:

(solução não recomendada)

[pic 8]

-- CREATE OUR TEMPORARY TABLE

CREATE TABLE #Temp_Example (

     [CategoryID] INT NOT NULL,

     [Category_Count] INT NOT NULL

)

-- INSERT THE VALUES WE LATER NEED INTO THE TEMP TABLE

INSERT INTO #Temp_Example (CategoryID, Category_Count)

SELECT C.CategoryID, COUNT(*) AS Category_Count

FROM Categories C

INNER JOIN Products P ON C.CategoryID = P.CategoryID

GROUP BY C.CategoryID, C.CategoryName

-- JOIN ON THE TEMP TABLE TO GET OUR VALUES

...

Baixar como (para membros premium)  txt (44.7 Kb)   pdf (635.4 Kb)   docx (83.5 Kb)  
Continuar por mais 27 páginas »
Disponível apenas no TrabalhosGratuitos.com