|
View Full Version : Limitar linhas em uma consulta
Felipe 08-01-2006, 03:25 PM Olá,
Estou precisando limitar um select, pois a consulta retorna muitos registros
( mais de 30 mil ) e o dataadapter.fill(dataset,0,50,"tabela") me retorna
apenas 50 linhas mas não melhora a performance, entao eu precisaria de uma
forma para limitar a quantidade de linhas dentro do select.
Alguem tem uma dica??
Obrigado!
Att Felipe R Martins.
Jose Antonio Farias 08-02-2006, 02:33 AM Bom..a princípio se você só quer 50 linhas o seu comando select deveria
retornar apenas essas 50 linhas..porque você está pedindo as 30 mil?
Se não houver nada nos dados que faça você trazer apenas as linhas que quer
trabalhar, você pode fazer algo como 'select top' e ver se funciona.
Mas de qualquer jeito seu esquema de banco de dados está meio estranho.
--
[]´s
Jalf.
Acompanhe meu blog:
http://compactplace.blogspot.com/
"Felipe" escreveu:
> Olá,
> Estou precisando limitar um select, pois a consulta retorna muitos registros
> ( mais de 30 mil ) e o dataadapter.fill(dataset,0,50,"tabela") me retorna
> apenas 50 linhas mas não melhora a performance, entao eu precisaria de uma
> forma para limitar a quantidade de linhas dentro do select.
>
> Alguem tem uma dica??
> Obrigado!
> Att Felipe R Martins.
Felipe 08-02-2006, 01:31 PM Amigo, imagina uma situação de cadastro de produtos (varios registros uma
casa de material de construção ok?), o usuario tem a opção de filtrar por
todos os produtos se ele quiser, pois bem, se ele fizer isso por engano, ou
se for de nessecidade dele, o SQL de select ira mostrar todos os registros
dele... entende ?
pois bem.... a TAG "TOP" não está funcioando no SQL CE, infelizmente, pois
quando eu coloco a mesma instrução no SQL SERVER, dá um erro.
por ex : select top 10 * from produtos, no SQL SERVER funciona belezinha,
mas no SQL CE dá o seguinte erro :
DB_E_ERRORSINCOMMAND
tt. Felipe R Martins
"Jose Antonio Farias" escreveu:
> Bom..a princípio se você só quer 50 linhas o seu comando select deveria
> retornar apenas essas 50 linhas..porque você está pedindo as 30 mil?
> Se não houver nada nos dados que faça você trazer apenas as linhas que quer
> trabalhar, você pode fazer algo como 'select top' e ver se funciona.
>
> Mas de qualquer jeito seu esquema de banco de dados está meio estranho.
> --
> []´s
> Jalf.
> Acompanhe meu blog:
> http://compactplace.blogspot.com/
>
>
> "Felipe" escreveu:
>
> > Olá,
> > Estou precisando limitar um select, pois a consulta retorna muitos registros
> > ( mais de 30 mil ) e o dataadapter.fill(dataset,0,50,"tabela") me retorna
> > apenas 50 linhas mas não melhora a performance, entao eu precisaria de uma
> > forma para limitar a quantidade de linhas dentro do select.
> >
> > Alguem tem uma dica??
> > Obrigado!
> > Att Felipe R Martins.
Jose Antonio Farias 08-02-2006, 01:59 PM Sim, eu entendo perfeitamente. O que faço normalmente nesse caso é só listar
produtos que começam com 'A', 'B', etc..nunca TODOS os produtos num único
grid, por exemplo. Não consigo imaginar uma situação onde ele irá precisar
listar 30000 produtos..se sua interface gráfica permite isso você tem de
avisar ao usuário que algumas operações poderão ser lentas e fazê-las de modo
assíncrono para que o usuário possa cancelar essas operações se for
necessário.
Qual a versão do SQL Server CE que você está usando? Sugiro pular logo para
a versão 2005..
--
[]´s
Jalf.
Acompanhe meu blog:
http://compactplace.blogspot.com/
"Felipe" wrote:
> Amigo, imagina uma situação de cadastro de produtos (varios registros uma
> casa de material de construção ok?), o usuario tem a opção de filtrar por
> todos os produtos se ele quiser, pois bem, se ele fizer isso por engano, ou
> se for de nessecidade dele, o SQL de select ira mostrar todos os registros
> dele... entende ?
>
>
> pois bem.... a TAG "TOP" não está funcioando no SQL CE, infelizmente, pois
> quando eu coloco a mesma instrução no SQL SERVER, dá um erro.
>
> por ex : select top 10 * from produtos, no SQL SERVER funciona belezinha,
> mas no SQL CE dá o seguinte erro :
> DB_E_ERRORSINCOMMAND
>
> tt. Felipe R Martins
>
>
> "Jose Antonio Farias" escreveu:
>
> > Bom..a princípio se você só quer 50 linhas o seu comando select deveria
> > retornar apenas essas 50 linhas..porque você está pedindo as 30 mil?
> > Se não houver nada nos dados que faça você trazer apenas as linhas que quer
> > trabalhar, você pode fazer algo como 'select top' e ver se funciona.
> >
> > Mas de qualquer jeito seu esquema de banco de dados está meio estranho.
> > --
> > []´s
> > Jalf.
> > Acompanhe meu blog:
> > http://compactplace.blogspot.com/
> >
> >
> > "Felipe" escreveu:
> >
> > > Olá,
> > > Estou precisando limitar um select, pois a consulta retorna muitos registros
> > > ( mais de 30 mil ) e o dataadapter.fill(dataset,0,50,"tabela") me retorna
> > > apenas 50 linhas mas não melhora a performance, entao eu precisaria de uma
> > > forma para limitar a quantidade de linhas dentro do select.
> > >
> > > Alguem tem uma dica??
> > > Obrigado!
> > > Att Felipe R Martins.
Felipe 08-02-2006, 08:44 PM Obrigado pela dica Jose Antonio, acho que vou usar esse método seu mesmo por
enquanto....
meu SQL Server CE é 2005....
Abraços...
Att. Felipe.
"Jose Antonio Farias" escreveu:
> Sim, eu entendo perfeitamente. O que faço normalmente nesse caso é só listar
> produtos que começam com 'A', 'B', etc..nunca TODOS os produtos num único
> grid, por exemplo. Não consigo imaginar uma situação onde ele irá precisar
> listar 30000 produtos..se sua interface gráfica permite isso você tem de
> avisar ao usuário que algumas operações poderão ser lentas e fazê-las de modo
> assíncrono para que o usuário possa cancelar essas operações se for
> necessário.
>
> Qual a versão do SQL Server CE que você está usando? Sugiro pular logo para
> a versão 2005..
> --
> []´s
> Jalf.
> Acompanhe meu blog:
> http://compactplace.blogspot.com/
>
>
> "Felipe" wrote:
>
> > Amigo, imagina uma situação de cadastro de produtos (varios registros uma
> > casa de material de construção ok?), o usuario tem a opção de filtrar por
> > todos os produtos se ele quiser, pois bem, se ele fizer isso por engano, ou
> > se for de nessecidade dele, o SQL de select ira mostrar todos os registros
> > dele... entende ?
> >
> >
> > pois bem.... a TAG "TOP" não está funcioando no SQL CE, infelizmente, pois
> > quando eu coloco a mesma instrução no SQL SERVER, dá um erro.
> >
> > por ex : select top 10 * from produtos, no SQL SERVER funciona belezinha,
> > mas no SQL CE dá o seguinte erro :
> > DB_E_ERRORSINCOMMAND
> >
> > tt. Felipe R Martins
> >
> >
> > "Jose Antonio Farias" escreveu:
> >
> > > Bom..a princípio se você só quer 50 linhas o seu comando select deveria
> > > retornar apenas essas 50 linhas..porque você está pedindo as 30 mil?
> > > Se não houver nada nos dados que faça você trazer apenas as linhas que quer
> > > trabalhar, você pode fazer algo como 'select top' e ver se funciona.
> > >
> > > Mas de qualquer jeito seu esquema de banco de dados está meio estranho.
> > > --
> > > []´s
> > > Jalf.
> > > Acompanhe meu blog:
> > > http://compactplace.blogspot.com/
> > >
> > >
> > > "Felipe" escreveu:
> > >
> > > > Olá,
> > > > Estou precisando limitar um select, pois a consulta retorna muitos registros
> > > > ( mais de 30 mil ) e o dataadapter.fill(dataset,0,50,"tabela") me retorna
> > > > apenas 50 linhas mas não melhora a performance, entao eu precisaria de uma
> > > > forma para limitar a quantidade de linhas dentro do select.
> > > >
> > > > Alguem tem uma dica??
> > > > Obrigado!
> > > > Att Felipe R Martins.
|
|
|