[ RDBMS ]
Quando o Oracle roda, ele recebe pedidos de dados dos usuários. Os dados ficam em diversos arquivos de dados no disco. Não há comunicação direta entre o banco de dados e os usuários. Todas as leituras, gravações e alterações dos dados passam através das estruturas de memória do Oracle. Isso aumenta a importância de usar a memória eficientemente.
O Oracle mantém uma área de SQL compartilhada na memória, também referida como pool compartilhado. Todas as declarações SQL são executadas nesse pool. Quando uma declaração SQL é passada para o Oracle, antes de carregá-la nesse poll, o Oracle procura aí uma declaração idêntica. Se ele encontrar uma combinação, a nova declaração é descartada, e a que já está no pool é executada em seu lugar. À preparação para a execução e a colocação no pool compartilhado, nos referimos como fase de preparação.
A leitura de informações do dico é referida como acesso a disco. Minimizar o acesso a disco é importante, dadas as operações que o computador executa quando lê no disco. Ele perde tempo para posicionar o leitor sobre o ponto exato no disco em que residem os dados, e o tempo para transferi-los para a memória pode se tornar BASTANTE significativo.
CREATE INDEX nome_do_indice ON nome_da_tabela (coluna1, coluna2, coluna3,...);
Projete suas conveções de codificaça (ou utilize as descritas abaixo). Passar declarações para processamento idênticas às que já estão no pool ajuda a otimizar seus aplicativos.
1 - Use uma linha para cada parte da declaração SQL. Alinhe a primeira palavra-chave de cada linha com a palavra-chave da seguinte.
SELECT nome, endereco, sexo FROM bolsista WHERE cod_id = id GROUP BY sexo ORDER by nome;2 - Definir padrão de caracteres para as palavras especias e para as demais.
SELECT nome, endereco, sexo FROM bolsista WHERE cod_id = id GROUP BY sexo ORDER by nome;3 - Coloque vírgulas ao lado do texto e deixe um espaço depois.
SELECT col1, col2, SUM(col3) ...4 -Quando uma vírgula é o último caracter de uma linha, coloque-a nessa linha em vez de pular para próxima e depois inserir a vírgula.
SELECT col1, col2 ,col3 Preferir este modo : SELECT col1, col2, col35 - Identação de colunas.
SELECT col1, col2, col3, SUM(col4, conl5, col6, col7, col8, col9, col106 - Quando você tem o WHERE seguido de uma ou mais linhas começadas com AND , realizar alinhamento.
WHERE AND AND AND AND7 - Não deixe espaços ao lado de parênteses quando eles aparecem em declarações SQL.
SELECT col1, col2, SUM(col3)8 - Deixe um espaço nos dois lados dos operadores usados nas declarações SQL.
WHERE x = y AND f = a AND t = z
Graduação 1 - Este caminho está disponível quando a palavra-chave WHERE iguala o rowid com um único valor.
SELECT * FROM bolsa WHERE rowid = `005A3.0012.089F`;Nas declarações SQL geralmente não se conhece o rowids, de modo que esse caminho não é usado explicitamente com muita frequência.
Graduação 4 - Este caminho está disponível quando todas as coluas de uma chave exclusiva ou principal são referenciadas por sua declarações de igualdade.
Coluna Parte da chave principal nome SIM telefone SIM cidade NÃO SELECT * FROM dados WHERE nome = `FRANK` AND cidade = `BRASILIA`;Este exemplo poderia tirar proveito desse caminho de acesso, todas as colunas da chave principal são mencionadas no where/and e são comparadas usando igualdade.
Graduação 8 - Se a cláusula where da declaração mencionar todas as colunas em um índice composto e executar comparações de igualdade, esse caminho de acesso será usado.
Graduação 9 - Esse caminho de acesso é usado se a parte where/and da declaração SQL utilizar um ou mais índices de coluna simples. Se mais de um índice de coluna simples é usado, as condições devem ser conectadas com and.
Graduação 15 - A varredura total da tabela é usada para toda declaração SQL que não satisfaz os critérios de outros caminhos de acesso graduados.Cada registro da tabela é lido sequencialmente; aqueles que se qualificam em todos os critérios são escolhidos, e os demais são descartados.
Para usar essa estratégia, você deve reunir estatísticas a serem examinadas pelo otimizador baseado em custo ao selecionar o caminho de acesso aos dados, durante a determinação do plano de execução. Você reúne estatísticas manualmente usando o comando analyze em tabelas, índices ou clusters.
Lembre-se que, se você quer usar a otimização baseada em custo e não reunir estatísticas manualmente, o Oracle as estimará durante a fase de análise de cada nova declaraçã SQL. Essa é uma situação indesejável - essa reunião em andamento pode consumir tempo.
analyze table bolsa estimate statistics; analyze table bolsa estimate statistics sample 35 percent; analyze table bolsa compute statisticas;comput calcula as estimativas exatas, mas demora mais tempo.
Em um banco com muita concorrência, recomenda-se a execução de analises diárias. Você deve definir a melhor forma de atualização das suas tabelas de estatísticas.
Os resultados da análise são armazenados nas visões de dicionário de dados user_tables e user_indexs.
user_tables | user_indexes | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Referência :
<= |