Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

janioaguiar

Consulta lenta com ORDER BY

Recommended Posts

Pessoal,

Tenho um tabela com 31.000 itens e fazendo a consulta abaixo com ORDER BY, demora incríveis 44 segundos para mostrar o resultado com 83 itens.
Select codigo, descri, uniprd, prccom, prcmer, sldstk, refere
FROM a03prd
WHERE DESCRI LIKE '%COCA%'
ORDER BY DESCRI

Se tiro o ORDER BY a mesma consulta passa a ser instantânea!

Alguém sabe pq isso acontece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

instantânea na aplicação ou diretamente no BD ?

 

atente que para o ORDER BY só é feito após todo o result set pronto.

 

um eventual índice por DESCRI não deve ser usado pois o LIKE com o % na primeira letra o "mata"

 

fez o plano de execução da sql ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não , devem ser os primeiros registros apenas, experimente dar um control-end ou similar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT t.*
  FROM (
         Select codigo, descri, uniprd, prccom, prcmer, sldstk, refere
           FROM a03prd
          WHERE DESCRI LIKE '%COCA%'
       ) AS t
ORDER BY t.DESCRI

Resolvido com o código abaixo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não me faz sentido mas se funcionou deixa quieto !

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

Testei de varias maneiras e em vários lugares! Direto no BD, pelo heidiSQL, direto na aplicação, etc... o resultado foi sempre o mesmo: COM order by, 44/46 segundos; SEM order by, instantâneo!

 

Explicação? Parece que ele estava fazendo um ORDER BY na tabela inteira e NAO no resultado da consulta (como tem que ser). Desviando a consulta para uma 'tabela derivada', finalmente ele se comportou como o desejado!

 

Pq ele estava fazendo ORDER BY na tabela inteira e não no RESULT SET? Não sei

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.