Ordenar tabelas sem Order by

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
Anderrssoon
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Qui, 15 Mar 2012 7:34 am

Olá pessoal,
gostaria de tirar uma dúvida, gostaria de saber se existe alguma forma no oracle de ordenar as informações em uma tabela sem a utilização de ORDER BY. Por exemplo,

Tenho uma tabela que possui uma coluna chamada PER_STATUS que possui os valores 0 para inativo e 1 para ativo eu gostaria de ordenar os campos como 1,1,1,1,0,0,0,0 para que na hora que eu der um select nesta tabela os dados já serem extraídos nesta ordem. Atualmente os dados estão vindo, 0,0,0,0,0,1,1,1,1,1.

Por que você quer ordenar antes?

Simplesmente porque quando faço o select com o order by na view que me trás estas informações eu perco desempenho no select.

Desde já agradeço a atenção, forte abraço. :D
Avatar do usuário
als04545
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 21 Mar 2011 7:53 am
Localização: Lins - SP
Carlos Silva
" Nunca me preocupo com o futuro... muito em breve, ele virá. " Albert Einstein

Bom dia, Anderson!

Desconheço esse metodo,
Para 000011111, você já tentou utilizar o metodo abaixo.

select [coluna]
from tabela
order by [coluna] desc;

At>.:
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Impossível. Você obrigatoriamente deve usar Order By para retornar dados ordenados num Select.

Mesmo que coincidentemente ele retorne na ordem que você quer sem usar Order By, não se deve depender desse comportamento, que pode mudar a qualquer momento gerando um bug na sua aplicação.

Apenas Order By em cada garante a ordenação. E apenas no Select. Não há forma de "inserir" em ordem que garanta que o select devolva na mesma ordem implicitamente.

O que talvez dê para fazer para melhorar o desempenho do seu select é testar se a criação da tabela através de um index-organized table possa ajudar... vai depender de testes, de como são os dados da tabela e de como o select filtra e acessa os dados (pk, uk, fk), joins com outras tabelas e etc.

http://docs.oracle.com/cd/E11882_01/ser ... dexiot.htm
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes