uba_heraeus Sabes, não é tão importante responder a respostas antigas de alguém está errado na internet ?
Avalados por :
Olá Gurus,
Tenho algumas perguntas sobre tabelas ordenadas
tenho uma tabela interna ordenada,
itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.
Loop em itab_sortd em wa_srtd onde matnr = 'xxxx'.
.....
Endloop.
Se eu usar ambas as chaves na declaração where posso conseguir uma pesquisa binária.
1. mas e se eu não estiver usando toda a chave? Ainda fará uma pesquisa binária ao usar a parte mais à esquerda da chave?
Li que se usarmos a parte mais à esquerda da chave, podemos realizar uma pesquisa binária em tabelas ordenadas.
2. Também e quanto ao loop com todos os campos chave + campos adicionais?
por exemplo
itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.
Loop em itab_sortd em wa_srtd onde MATNR = 'xxxx' WERKS= 'yyyy' PSTNK = 'zzzz'.
.....
Endloop
3.
itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.
LER TABELA itab_sortd COM CHAVE matnr = 'XXXX'.
A declaração acima resultará em uma pesquisa binária?
Obrigado antecipadamente,
uba_heraeus Sabes, não é tão importante responder a respostas antigas de alguém está errado na internet ?
Olá a todos,
Lamento, mas mesmo que isso tenha sido publicado há muito tempo, devo discordar do ponto 3):
Quando itab_sortd é declarado como SORTED TABLE, qualquer acesso (LOOP, READ,...) será uma busca binária assim que uma parte inicial de uma chave for utilizada.
LER TABELA itab_sortd COM CHAVE DE TABELA matnr = 'XXXX'
LER TABELA itab_sortd COM CHAVE matnr = 'XXXX'
ambos serão executados como busca binária, porque matnr é o primeiro campo da chave primária. (o mesmo se aplica para as chaves secundárias...)
É APENAS a TABELA PADRÃO que precisa da adição explícita de BINARY SEARCH!
Olá Rojar,
Por favor, encontre minhas respostas para sua pergunta.
1) SIM. Dado que a tabela já está ordenada com MATNR e WERKS, se você usar apenas MATNR, atuará como uma busca binária apenas.
2) Por favor, encontre a seguinte declaração de sintaxe para sua necessidade (Loop com todos os campos chave + campos adicionais)
itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.
Loop em itab_sortd em wa_srtd onde MATNR = 'xxxx' e WERKS= 'yyyy' e PSTNK = 'zzzz'.
.....
Endloop
3) Não.
Para as declarações mencionadas por você acima, apenas a Busca Linear ocorrerá, pois você não mencionou ao compilador para usar a técnica de Busca Binária para a leitura. Você precisa mencionar explicitamente 'BINARY SEARCH' na declaração de leitura, mesmo que já esteja ordenado. A busca binária diminuirá o tempo de busca, esse é o seu propósito.
itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.
LER TABELA itab_sortd COM CHAVE matnr = 'XXXX' BINARY SEARCH .
Olá Rojer,
1) Você está correto.
2) A busca binária só funcionará para as chaves mencionadas na tabela de chaves.
3) Sim.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute