Ir para conteúdo

POWERED BY:

Arquivado

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

mateushim

Melhorar performace paginção sem LIMIT e sem AbsolutePage

Recommended Posts

Bom galera

 

Fiz um algoritmo de paginação em asp

 

estou utilizando sql server 2008 e não aceita o comando AbsolutePage e pelo jeito o comando limit inicio,final não funciona

 

encontrei um comando sql que faz paginação no sql server, mas achei complicado sempre ter que faze-lo

 

então criei um algoritmo que resolvesse minha necessidade

 

so que eu achei que da para melhorar mais, so que queria a opnião de vocês

 

eis o codigo

<%
	Call Abre_dbdiario()

	Set RS = Server.CreateObject("adodb.recordset")
				
	SQL = "select nome from pessoas"
	RS.Open SQL,Conn,3,3
	
	totalRegistros = RS.recordCount ' Total de Registro
				
	registrosPagina = 1 ' Numero de registro por Paginas
	
	totalRegistroPagina = round(totalRegistros/registrosPagina) ' Total de registro por pagina
	
	' Pega parametro numero da pagina da url
	If Request.QueryString("p")<>"" Then
		p = CInt(Request.QueryString("p"))
	Else
		p = 1
	End If 
	
	inicio = ( p - 1 ) * registrosPagina ' Variavel de inicio para começar a mostrar registros

	final = final + inicio ' Variavel limite onde termina de mostrar os registros
	
	x = 0 ' Inicio Contador
	
	Do While Not RS.eof
		x= x +1
		If x>inicio and x<=final  Then
		
			response.write "nome="&rs("nome")
		
		End If
  		RS.MoveNext
	Loop
	
	If p >= totalRegistroPagina-1 Then
%>
		<a href="?p=<%=p-1%>">Anterior</a>
<%
	End If

	For a=1 to totalRegistroPagina
		If a=p Then
%>
			<a href="?p=<%=a %>">[ <%=a %> ]</a> 
<%
		Else
%>
			<a href="?p=<%=a %>"><%=a %></a> 
<%	
		End f
	Next

	If totalpag1-1>=p Then
%>
		<a href="?p=<%=p + 1%>">Próxima</a>
<%
	End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei probleminhas no meu post, então vou posta-lo novamente

 

<%
	Call Abre_dbdiario()

	Set RS = Server.CreateObject("adodb.recordset")
				
	SQL = "select nome from pessoas"
	RS.Open SQL,Conn,3,3
	
	totalRegistros = RS.recordCount ' Total de Registro
				
	registrosPagina = 1 ' Numero de registro por Paginas
	
	totalRegistroPagina = round(totalRegistros/registrosPagina) ' Total de registro por pagina
	
	' Pega parametro numero da pagina da url
	If Request.QueryString("p")<>"" Then
		p = CInt(Request.QueryString("p"))
	Else
		p = 1
	End If 
	
	inicio = ( p - 1 ) * registrosPagina ' Variavel de inicio para começar a mostrar registros

	final = registrosPagina + inicio ' Variavel limite onde termina de mostrar os registros
	
	x = 0 ' Inicio Contador
	
	Do While Not RS.eof and x<=final
		x= x +1
		If x>inicio Then
		
			response.write "nome="&rs("nome")
		
		End If
  		RS.MoveNext
	Loop
	
	If p >= totalRegistroPagina-1 Then
%>
		<a href="?p=<%=p-1%>">Anterior</a>
<%
	End If

	For a=1 to totalRegistroPagina
		If a=p Then
%>
			<a href="?p=<%=a %>">[ <%=a %> ]</a> 
<%
		Else
%>
			<a href="?p=<%=a %>"><%=a %></a> 
<%	
		End f
	Next

	If totalRegistroPagina-1>=p Then
%>
		<a href="?p=<%=p + 1%>">Próxima</a>
<%
	End If
	
	Call Fecha_db()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o SQL TOP

 

A cláusula TOP é utilizado para especificar o número de registros para retornar.

 

A cláusula TOP pode ser muito útil em tabelas grandes, com milhares de registros. Voltando um grande número de registros pode ter impacto no desempenho.

 

Nota: Nem todos os sistemas de banco de dados de suporte a cláusula TOP.

 

SELECT TOP number|percent column_name(s)
FROM table_name

SQLServer

 

SELECT TOP 5 * FROM TABELA

 

MySQL

 

SELECT * FROM TABELA LIMIT 0,5

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o SQL TOP

 

A cláusula TOP é utilizado para especificar o número de registros para retornar.

 

A cláusula TOP pode ser muito útil em tabelas grandes, com milhares de registros. Voltando um grande número de registros pode ter impacto no desempenho.

 

Nota: Nem todos os sistemas de banco de dados de suporte a cláusula TOP.

 

SELECT TOP number|percent column_name(s)
FROM table_name

SQLServer

 

SELECT TOP 5 * FROM TABELA

 

MySQL

 

SELECT * FROM TABELA LIMIT 0,5

 

também pensei, mas se eu usar o TOP não da de fazer paginação

 

ai iria ter que fazer 2 sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar uma subquery

e naun eskça de ver os exemplos de paginacaun no lab. de scripts

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.