Um algoritmo de paginação superior eficiente de topo. O código é o seguinte:
<%
'Número de registros por página
Dim PageSize
PageSize = 30
'Leia o número total de registros, número total de páginas, Piaoyi Notes
Dim TotalRecords, TotalPages
Sqlstr = selecione count (id) como registros da tabela1
Definir rs = Conn.Execute (SQLSTR, 0,1)
TotalRecords = RS (Registrosum)
se int (totalRecords/pagageSize) = TotalRecords/PageSize então
TotalPages = TotalRecords/PageSize
outro
TotalPages = int (TotalRecords/PageSize) +1
final se
Rs.close
Defina rs = nada
'Número da página atual, nota Piaoyi
Página escura
página = solicitação (página)
se isnumeric (página) = false então
Response.Write <Script Language = JavaScript> alert ('Erro do parâmetro!');
Response.write window.close (); </sCript>
resposta.END
final se
Se página = ou página <1 então página = 1
Se Page-TotalPages> 0 então página = TotalPages
página = int (página)
Se página = 1 então
SQL = Selecione Top & Pagesize & ID, Título, Tempo da Tabela1 Order by Time Desc
outro
SQL = Selecione Top & Pagesize & ID, Título, Hora da Tabela1 Onde Time <(Selecione Min (Hora) (Selecione Top & Pagesize*(Página-1) e Hora da Tabela 1 Order by Time Desc) como T)
final se
Set rs = server.createObject (adodb.recordset)
Rs.Open SQL, Conn, 1,1
Faça enquanto não é Rs.eof
Response.Write Cada registro Informações: & rs (id) & <br>
rs.movenext
laço
rs.close
Defina rs = nada
'' Página o código de volta omitido ...
%>
Este é um algoritmo de paginação muito eficiente. Quando a quantidade de dados na tabela de dados atinge milhões, o tempo de resposta do algoritmo de paginação acima é muito curto, geralmente dentro de algumas dezenas de milissegundos. O princípio é muito simples.
Nos exemplos dos dois algoritmos de paginação acima, o Flymorn usa o tempo de tempo para encomendar por tipo, porque na maioria dos sistemas aos quais fui exposto, precisamos atualizar o usuário recentemente (incluindo registros recém -adicionados e novas modificações) do registro antigo (registro antigo) é exibido na frente. É por isso que o Flymorn usa o campo de tempo.
Isso envolve a questão da indexação agregada. Por padrão, usamos o ID numerado automático como a chave primária e a usamos como a coluna do índice agregado. Mencionei a pergunta de que o conteúdo atualizado recentemente precisa ser mostrado no anterior, por isso precisamos usar o campo de tempo para classificá -lo. Portanto, para obter maior eficiência de paginação, podemos projetar esse campo de tempo como uma coluna de índice agregado ao projetar o banco de dados.
Após esse design, a eficiência geral da paginação será bastante aprimorada.
No entanto, há outro pequeno problema em usar esse campo de tempo como coluna do índice agregado. Porque a tabela de dados é organizada, ela é classificada fisicamente de acordo com a coluna do índice agregado. O banco de dados precisa ser baseado nessa coluna de índice agregada também menciona as informações recém -editadas até o final da tabela, que leva um certo período de tempo. Ou seja, quando usamos o campo de tempo como coluna do índice agregado, precisamos gastar um pouco mais de tempo ao atualizar os dados.
No entanto, em uma comparação abrangente, Piaoyi acredita que a chave para o algoritmo de paginação eficiente do topo selecionado é evitar a varredura completa da tabela e tentar obter apenas os campos necessários. são o tempo de resposta da instrução SQL classificada é a mais rápida. Após esse processamento, para o banco de dados do SQL Server, mesmo que haja dezenas de milhões de dados, não há necessidade de se preocupar com o fato de o algoritmo de paginação perder sua resposta.
O acima exposto é um algoritmo escrito com o idioma ASP como exemplo e, é claro, ele também pode ser modificado em outros idiomas, como asp.net e php. Para usar melhor esse código de paginação, você também pode reescrever o algoritmo acima em um procedimento armazenado.
Finalmente, deixe uma pequena pergunta: quando selecione Pagamento superior, quando a página for transformada no final, o que acontecerá se a coluna do campo de classificação não for a coluna do índice agregado?