Después de la prueba, al consultar la página 100000 entre 14483461 registros, con 10 registros por página en orden ascendente y descendente, la primera vez es de 0,47 segundos y la segunda vez es de 0,43 segundos. La sintaxis de la prueba es la siguiente: impulsado por vevb.com.
ejecutivo GetRecordFromPage noticias,newsid,10,100000
news es el nombre de la tabla, newsid es el campo clave, indexe primero newsid cuando lo use.
Copie el código de código de la siguiente manera:
/*
Nombre de la función: GetRecordFromPage
Función: obtener los datos de la página especificada.
Descripción del parámetro: @tblName nombre de la tabla que contiene datos
@fldName nombre del campo clave
@PageSize Número de registros por página
@PageIndex El número de página que se obtendrá
@OrderType tipo de clasificación, 0 - orden ascendente, 1 - orden descendente
@strWhere condiciones de consulta (nota: no agregue dónde)
Autor: Puño de Hierro
Correo electrónico: [email protected]
Hora de creación: 2006-07-04
Hora de modificación: 2006-07-04
*/
CREAR PROCEDIMIENTO GetRecordFromPage
@tblName varchar(255), -- nombre de tabla
@fldName varchar(255), -- nombre del campo
@PageSize int = 10, -- tamaño de página
@PageIndex int = 1, -- número de página
@OrderType bit = 0, - Establece el tipo de clasificación, los valores distintos de 0 están en orden descendente
@strWhere varchar(2000) = '' -- condiciones de consulta (nota: no agregue dónde)
COMO
declarar @strSQL varchar(6000) - declaración principal
declarar @strTmp varchar(1000) - variable temporal
declarar @strOrder varchar(500) - tipo de clasificación
si @TipoDePedido!= 0
comenzar
establecer @strTmp = '<(seleccionar min'
set @strOrder = 'ordenar por [' + @fldName + '] desc'
fin
demás
comenzar
set @strTmp = '>(seleccionar máximo'
set @strOrder = 'ordenar por [' + @fldName +'] asc'
fin
set @strSQL = 'seleccionar arriba' + str(@PageSize) + ' * de ['
+ @tblName + '] donde [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) de (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] de [' + @tblName + ']' + @strOrder + ') como tblTmp)'
+ @strOrder
si @strDónde != ''
set @strSQL = 'seleccionar arriba' + str(@PageSize) + ' * de ['
+ @tblName + '] donde [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) de (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] de [' + @tblName + '] donde ' + @strDónde + ' '
+ @strOrder + ') como tblTmp) y ' + @strWhere + ' ' + @strOrder
si @PageIndex = 1
comenzar
establecer @strTmp = ''
si @strDónde != ''
establecer @strTmp = 'dónde (' + @strWhere + ')'
set @strSQL = 'seleccionar arriba' + str(@PageSize) + ' * de ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
fin
ejecutivo(@strSQL)
IR