Эффективный алгоритм выбора верхнего пейджинга. Код заключается в следующем:
<%
'Количество записей на страницу
Dim PageSize
PageSize = 30
'Прочитайте общее количество записей, общее количество страниц, Piaoyi Notes
Dim Total Records, TotalPages
SQLSTR = SELECT COUNT (ID) в качестве Recordsum из таблицы1
Установите rs = conn.execute (sqlstr, 0,1)
TotalRecords = RS (Recordsum)
Если int (totalRecords/pagesize) = total Records/PageSize Then
TotalPages = TotalRecords/PageSize
еще
TotalPages = int (TotalRecords/PageSize) +1
конец, если
Rs.close
Установить RS = ничего
'Текущий номер страницы, примечание Piaoyi
Dim Page
Page = запрос (страница)
Если isNumeric (page) = false then
response.write <script language = javascript> alert ('ошибка параметров!');
response.write window.close (); </script>
response.end
конец, если
Если Page = или Page <1, то Page = 1
Если Page-totalpages> 0, то Page = TotalPages
page = int (page)
Если Page = 1 then
SQL = SELECT TOP & PAGESIZE & ID, заголовок, время из таблицы 1 порядок по времени DESC DESC
еще
SQL = SELECT TOP & PAGESIZE & ID, заголовок, время из таблицы 1, где время <(Выберите min (время) из (выберите Top & PageSize*(Page-1) и Время из таблицы 1 порядок по времени DESC) как t) порядок по времени DESC
конец, если
Установить rs = server.createObject (adodb.recordset)
Rs.open SQL, Conn, 1,1
Делать, пока не rs.eof
response.write Каждая информация записи: & rs (id) и <br>
Rs.movenext
петля
Rs.close
Установить RS = ничего
'' Страница повернуть код опущено ...
%>
Это очень эффективный алгоритм пейджинг. Когда объем данных в таблице данных достигает миллионов, время отклика вышеупомянутого алгоритма пейджинга очень короткое, обычно в течение нескольких десятков миллисекундов. Принцип очень прост.
В примерах двух алгоритмов пейджинга, флаймон, использует время поля времени для заказа, потому что в большинстве систем я подвергался воздействию, нам необходимо недавно обновить пользователя (включая недавно добавленные записи и новые модификации) Старая запись (старая запись) отображается спереди. Вот почему мухождение использует поля времени.
Это включает проблему агрегированной индексации. По умолчанию мы используем автоматический пронумерованный идентификатор в качестве первичного ключа и используем его в качестве столбца агрегатного индекса. Я упомянул вопрос о том, что недавно обновленный контент должен быть показан в предыдущем, поэтому мы должны использовать поля времени для его сортировки. Поэтому, чтобы достичь более высокой эффективности пейджинга, мы можем спроектировать это время в качестве столбца агрегатного индекса при разработке базы данных.
После такой конструкции общая эффективность под педари будет значительно улучшена.
Тем не менее, существует еще одна небольшая проблема с использованием этого поля Времени в качестве столбца агрегатного индекса. Потому что, когда таблица данных расположена, она физически отсортирована в соответствии с столбцом агрегатного индекса. База данных должна быть основана на этом агрегированном индексе, также упоминает недавно отредактированную информацию до конца таблицы, которая занимает определенное количество времени. То есть, когда мы используем поле времени в качестве столбца агрегатного индекса, нам нужно потратить немного больше времени при обновлении данных.
Тем не менее, в комплексном сравнении Piaoyi считает, что ключ к эффективному алгоритму Paging Of Select Top заключается в том, чтобы избежать полного сканирования таблицы и попытаться получить только необходимые поля. Является ли время отклика сортированного оператора SQL является самым быстрым. После этой обработки для базы данных SQL Server, даже если есть десятки миллионов данных, нет необходимости беспокоиться о том, что алгоритм подкидки потеряет свой ответ.
Выше приведено алгоритм, написанный с языком ASP в качестве примера, и, конечно, он также может быть изменен на другие языки, такие как ASP.NET и PHP. Чтобы лучше использовать такой код пейджинга, вы также можете переписать вышеуказанный алгоритм в хранимую процедуру.
Наконец, оставьте небольшой вопрос: когда выберите Top Paging, когда страница будет повернута к концу, что произойдет, если столбец поля сортировки не является столбцом индекса агрегатного индекса?