Bom dia. A PK esta criada desde que a tabela foi criada, e não tive problema com ele. Quando digo que é uma tabela "temporária" digo isso pq ela é usada como auxiliar de um relatório, não que eu a cria e a destrua sempre. Ela foi criada, fica no banco, e quando vou rodar a procedure eu inicio apagando os dados antigos. Acho que deveria ter me referido a ela como "tabela auxiliar" mesmo, teria gerado menos confusão. No inicio do processamento, no "insert" inicial de itens, o processo todo é bem rápido, o problema estava quando ia alterar (update) nos itens que já estavam na gravados na tabela (no cursor inicial). Era nesse processo de update que o negocio pegava. Quando foi criado um índice, o problema acabou. Por isso a duvida se o índice gerado na PK é tratado de forma diferente do índice criado manualmente.
[]s Emerson Sanches Analista de Sistemas Em seg., 9 de dez. de 2019 às 19:57, aandrelrm aandre...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > Boa noite, > > Em relacao a PK, ela foi recriada ou ja existia? > Acredito que o problema se resolveria com a recriacao da PK, ja que voce > disse que apenas apaga os dados correto? > > Acredito que apenas um rebuild resolveria. > > Em relacao a diferença entre PK e indice em termos de arquitetura nao ha, > ele cria uma arvore e suas respectivas folhas. > > > Experimenta dropar o indice e recria a PK, lembrando que se esta tabela > tiver dependente, apague a consttraint. > > Espero ter ajudado! > > > > Enviado do tablet Samsung. > > -------- Mensagem original -------- > De : "Emerson Sanches emerson.sanc...@gmail.com [oracle_br]" < > oracle_br@yahoogrupos.com.br> > Data: 09/12/2019 16:23 (GMT-03:00) > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] Criação Índice > > > > Boa tarde pessoal do Grupo. > Tenho uma procedure rodando com muitos cursores pra popular uma tabela > auxiliar que criei (essa tabela é fixa, eu apago ela completamente no > inicio da procedure). Essa tabela contem vários campos, entre ele CNPJ > cliente, Código Produto e Part Number do produto. Esse campos são usados na > PK da tabela. > > O primeiro cursor acessa a base de faturamento e popula essa tabela criada > com informação do cnpj cliente, código do produto e part number do cliente. > O restante dos campos são deixados em branco. > > O segundo cursor acessa essa tabela, populada pelo cursor anterior, e, > baseado em suas informações, acessa a base de custos. Depois de aberto o > cursor, eu faço um update na tabela criada com as informações retornada > pelo cursor. > > Esse processo sempre rodou rapidamente, dentro do esperado pra um processo > desse tipo. Na ultima semana o processo ficou EXTREMAMENTE lento. > Conversando com o DBA (free lance da empresa) ele solucionou o problema > criando um índice utilizando os campos CNPJ Cliente, Código Produto e Part > Number. > > Ai que vem a duvida, na criação da PK já não foi criado um índice com > esses campos? Pq a criação de um índice "manual" resolveu o problema, se, > teoricamente, o índice já existia? O Oracle trata de forma diferente > índices criados automaticamente pela PK e índices criados manualmente? > > Espero ter me feito entender. > Agradeço desde pela atenção sempre prestada. > > []s > Emerson > > >