Professional Documents
Culture Documents
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