You are on page 1of 14

c 







c 




   

‡ A maneira como uma query é escrita afeta


muito a performance.
‡ Queries mal escritas são a quarta causa
de problemas de performance.
‡ Problemas no projeto (modelo) está
apenas em quinto lugar. ½
c 




   
‡ Uma query mal escrita afeta todas as outras.
‡ Enquanto o sql desperdiça recursos em uma
query mal escrita, o desempenho de outras
queries também será afetado.
‡ Tempo investido na melhoria do desempenho
da aplicação (queries e procedures) tem um
ganho de performance maior do que
investimento em hardware.
Π    


   

‡   
 
 

.
‡ Quanto menos linhas, menor
processamento e maior performance no
sql.
‡ Quanto menos colunas, menor tráfego de
rede.
Π    


   

‡   
 
 
± Para limitar o número de linhas use cláusulas
WHERE muito seletivas.
± Quanto mais seletivo o WHERE, menor o
número de linhas.
Π    


   

‡   
  

± c Select * a menos que você
realmente precise usar todas as colunas da
tabela.
± Normalmente, select * não é necessário
Π   !
 

  "
‡ É vital escrever queries de forma que os
índices possam ser usados.
#$ %&' condições de pesquisa não
indexáveis.
($ %&' operadores aritméticos nas
colunas da cláusula WHERE.
)$ %&' funções nas colunas da cláusula
WHERE.
Π   !
 

  "
#* "  
+,  
-

."$
‡ /
+,  
-
."0 <>,
NOT EXISTS, NOT IN, NOT LIKE IN, OR e
algumas pesquisas com o LIKE como LIKE
µ%<literal>¶ ±  % 1c 2 %&'33c$
‡ /
+,  
."0=, >, >=,
<, <=, BETWEEN e algumas pesquisas com o
LIKE como LIKE µ<literal>%¶ ±  1c 2
'&&433c$
Π   !
 

  "
‡ Na maioria das vezes, o sql consegue
converter condições não indexáveis em
indexáveis, mas é ALTAMENTE
recomendável que nós façamos isso.
Π   !
 

  "
(* "    5  
 

     67 2 .
‡ Operadores aritméticos nas colunas do
WHERE impedem o otimizador do SQL de
utilizar o índice, consequentemente, um table
scan será feito.
‡ Ao invés de:
£ 
  


  

£ 
  


  
Π   !
 

  "
)* " 
+,
 
     
67 2 .
‡ Funções nas colunas do WHERE, asism como
operadores aritméticos, impedem o otimizador
do SQL de utilizar o índice, consequentemente,
um table scan será feito.
‡ Ao invés de:
£ 
    
   !"
use
£ 
    
# !$"
Π   !
 

  "
‡ Ao invés de:
£ % &

 '

() 

  % &


*
use
£ % &

 '

() % &
+

Π   "  
  
     
·. EVITE conversões implícitas.
2. Use EXISTS ao invés de COUNT(*) para verificar a
existência de dados.
3. Use UNION ALL ao invés de UNION
4. Use um JOIN ao invés de um UNION
5. Use índices para agregar e ordenar ± quando
disponíveis
6. Evite cláusulas WHERE redundantes
7. Use JOIN ao invés de subqueries
8. Evite variáveis locais em uma query
9. Cuidado com os nomes das stored procedures
· . Não use views em joins, aliás, não use views
··. Use a nomenclatura completa para referenciar tabelas
(dbo)
Π  
-
 
  

‡ Não referenciar o alias no order
± Select as sidney from table order by sidney
± Vai dar erro no SQL 2 8 64 bits

You might also like