O conceito de Rowid:
rowid é uma pseudocoluna Por ser uma pseudocoluna, esta coluna não é definida pelo usuário, mas adicionada pelo próprio sistema. Há uma pseudocoluna rowid para cada tabela, mas o valor da coluna ROWID não é armazenado fisicamente na tabela. No entanto, você pode usá-la como qualquer outra coluna, mas não pode excluir ou alterar a coluna, nem modificar ou inserir o valor da coluna. Depois que uma linha de dados é inserida no banco de dados, o rowid é único durante o ciclo de vida da linha, ou seja, mesmo que a linha passe por migração de linha, o rowid não será alterado.
Por que usar ROWID
rowid fornece o método de acesso mais rápido a uma determinada linha em uma tabela. O bloco de dados correspondente pode ser localizado diretamente por meio de ROWID e então lido na memória. Quando criamos um índice, o índice não apenas armazena o valor da coluna do índice, mas também armazena o ROWID da linha correspondente ao valor do índice. Desta forma, após encontrarmos rapidamente o ROWID da linha correspondente através do índice, podemos consultar rapidamente os dados através do ROWID. É por isso que é mais rápido quando usamos consultas de índice.
Nas versões anteriores do ORACLE8, ROWID consistia em FILE, BLOCK e ROW NUMBER. Com a expansão do conceito de objeto no Oracle8, ROWID mudou e consiste em OBJECT, FILE, BLOCK e ROW NUMBER. Você pode usar DBMS_ROWID para decompor o rowid nas partes acima ou pode combinar as partes acima em um rowid válido.
Conceito SQL recursivo Às vezes, para executar uma instrução SQL emitida pelo usuário, o Oracle deve executar algumas instruções adicionais. Chamamos essas instruções adicionais de 'chamadas recursivas' ou 'instruções SQL recursivas'. Por exemplo, quando uma instrução DDL é emitida, o ORACLE sempre emite implicitamente algumas instruções SQL recursivas para modificar as informações do dicionário de dados para que o usuário possa executar com êxito a instrução DDL. As chamadas recursivas geralmente ocorrem quando as informações do dicionário de dados necessárias não estão na memória compartilhada. Essas chamadas recursivas leem as informações do dicionário de dados do disco rígido para a memória. Os usuários não se importam com a execução dessas instruções SQL recursivas. O ORACLE executará automaticamente essas instruções internamente quando necessário. É claro que tanto as instruções DML quanto o SELECT podem causar SQL recursivo. Simplificando, podemos pensar nos gatilhos como SQL recursivo.
Fonte da linha
Usado em consultas, o conjunto de linhas qualificadas retornadas pela operação anterior pode ser um conjunto de todos os dados de linha da tabela; também pode ser um conjunto de dados de linha parciais da tabela ou pode ser um conjunto dos dois acima; fontes de linha. Uma coleção de dados de linha obtidos após uma operação de conexão (como conexão de junção).
Predicado
WHERE restrições em uma consulta
Mesa de condução
Esta tabela também é chamada de tabela externa (OUTER TABLE). Este conceito é usado em junções aninhadas e HASH. Se a origem da linha retornar mais dados de linha, isso terá um impacto negativo em todas as operações subsequentes. Observe que, embora isso seja traduzido como tabela de orientação, na verdade é traduzido com mais precisão como origem da linha de orientação. De modo geral, após a aplicação de restrições de consulta, a tabela com menos fontes de linha é retornada como tabela condutora. Portanto, se uma tabela grande tiver restrições (como restrições de igualdade) na condição WHERE, a tabela grande também será usada como condutora. Apropriado, portanto, não é possível usar apenas tabelas menores como tabelas de controle. A afirmação correta deve ser que, após aplicar as restrições de consulta, a tabela que retorna menos fontes de linha seja usada como tabela de controle. No plano de execução, deve ser a fonte da linha superior. Instruções específicas serão fornecidas posteriormente. Em nossa descrição subsequente, esta tabela é geralmente chamada de origem da linha 1 da operação de junção.
Tabela sondada (tabela sondada)
Esta tabela também é chamada de tabela interna (INNER TABLE). Depois de obtermos uma linha específica de dados da tabela do driver, procuramos linhas na tabela que atendam às condições de junção. Portanto, a tabela deve ser uma tabela grande (na verdade, deve ser uma tabela que retorne uma fonte de linha maior) e deve haver índices nas colunas correspondentes. Em nossa descrição subsequente, essa tabela é geralmente chamada de origem da linha 2 da operação de junção.
índice combinado (índice concatenado)
Um índice composto de múltiplas colunas, como criar índice idx_emp em emp(col1, col2, col3, ...), então chamamos o índice idx_emp de índice composto. Existe um conceito importante no índice combinado: a coluna principal No exemplo acima, a coluna col1 é a coluna principal. Quando fazemos uma consulta, podemos usar "where col1 = ?" ou "where col1 = ? e col2 = ?". Essas restrições usarão o índice, mas a consulta "where col2 = ?" Portanto, somente quando a coluna inicial for incluída na restrição, o índice combinado será utilizado para a restrição.
Seletividade:
A comparação do número de chaves exclusivas em uma coluna com o número de linhas na tabela determina a seletividade da coluna. Se a relação entre "número de chaves exclusivas/número de linhas na tabela" da coluna estiver mais próxima de 1, a seletividade da coluna será maior, a coluna será mais adequada para criar um índice e a seletividade do índice também é maior. Ao consultar colunas altamente selecionáveis, menos dados serão retornados, portanto, consultas de índice são mais adequadas.
Com esse conhecimento prévio adquirido, começamos a apresentar o plano de execução. Para executar uma instrução, o Oracle pode ter que implementar várias etapas. Cada uma dessas etapas pode ser a recuperação física das linhas de dados do banco de dados ou a preparação delas de alguma forma para uso pelo usuário que emite a instrução. A combinação dessas etapas que o Oracle usa para executar uma instrução é chamada de plano de execução. O plano de execução é a parte mais complexa e crítica da otimização SQL. Somente sabendo como o ORACLE executa a instrução SQL internamente podemos saber se o plano de execução selecionado pelo otimizador é ideal. Os planos de execução são tão importantes para os DBAs quanto as demonstrações financeiras são para o pessoal financeiro. Portanto os principais problemas que enfrentamos são: como obter o plano de execução; como analisar o plano de execução para descobrir os principais problemas que afetam o desempenho. A seguir, começaremos com a análise do plano de execução da árvore, depois apresentaremos como obter o plano de execução e, em seguida, apresentaremos como analisar o plano de execução.
Exemplo:
Este exemplo mostra o plano de execução para a instrução SQL a seguir.
SELECIONE nome, trabalho, sal, nome
DE emp, departamento
ONDE emp.deptno = derpt.deptno
E NÃO EXISTE
(SELECIONE*
DE salgrado
ONDE emp.sal ENTRE losal E hisal );
Esta declaração consulta o nome, cargo, salário e nome do departamento de todos os funcionários cujo salário não se enquadra em nenhuma das faixas salariais recomendadas.
Este artigo vem do blog CSDN. Por favor, indique a fonte ao reimprimir: http://blog.csdn.net/lcyhjx/archive/2009/12/20/5044672.aspx.