Setelah pengujian, saat menanyakan halaman 100000 di antara 14483461 catatan, dengan 10 catatan per halaman dalam urutan menaik dan menurun, yang pertama adalah 0,47 detik, dan yang kedua adalah 0,43 detik. Sintaks pengujiannya adalah sebagai berikut: didukung oleh vevb.com
exec berita GetRecordFromPage,newsid,10,100000
news adalah nama tabel, newsid adalah field kuncinya, harap indeks newsid terlebih dahulu saat menggunakannya.
Copy kode kodenya sebagai berikut:
/*
Nama fungsi: GetRecordFromPage
Fungsi: Mendapatkan data halaman yang ditentukan
Deskripsi parameter: @tblName nama tabel yang berisi data
@fldName nama bidang kunci
@PageSize Jumlah catatan per halaman
@PageIndex Nomor halaman yang ingin diperoleh
@OrderType jenis penyortiran, 0 - urutan menaik, 1 - urutan menurun
@strWhere kondisi kueri (catatan: jangan tambahkan di mana)
Pengarang: Tangan Besi
Email: [email protected]
Waktu pembuatan: 04-07-2006
Waktu modifikasi: 04-07-2006
*/
BUAT PROSEDUR GetRecordFromPage
@tblName varchar(255), -- nama tabel
@fldName varchar(255), -- nama bidang
@PageSize int = 10, -- ukuran halaman
@PageIndex int = 1, -- nomor halaman
@OrderType bit = 0, -- Atur jenis pengurutan, nilai selain 0 berada dalam urutan menurun
@strWhere varchar(2000) = '' -- kondisi kueri (catatan: jangan tambahkan di mana)
SEBAGAI
deklarasikan @strSQL varchar(6000) -- pernyataan utama
deklarasikan @strTmp varchar(1000) -- variabel sementara
deklarasikan @strOrder varchar(500) -- tipe penyortiran
jika @OrderType != 0
mulai
setel @strTmp = '<(pilih menit'
set @strOrder = 'pesan berdasarkan [' + @fldName + '] desc'
akhir
kalau tidak
mulai
setel @strTmp = '>(pilih maks'
set @strOrder = 'pesan berdasarkan [' + @fldName +'] asc'
akhir
set @strSQL = 'pilih atas ' + str(@PageSize) + ' * dari ['
+ @tblName + '] di mana [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) dari (pilih atas ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] dari [' + @tblName + ']' + @strOrder + ') sebagai tblTmp)'
+ @strOrder
jika @strWhere != ''
set @strSQL = 'pilih atas ' + str(@PageSize) + ' * dari ['
+ @tblName + '] di mana [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) dari (pilih atas ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] dari [' + @tblName + '] di mana ' + @strWhere + ' '
+ @strOrder + ') sebagai tblTmp) dan ' + @strWhere + ' ' + @strOrder
jika @PageIndex = 1
mulai
atur @strTmp = ''
jika @strWhere != ''
setel @strTmp = 'di mana (' + @strWhere + ')'
set @strSQL = 'pilih atas ' + str(@PageSize) + ' * dari ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
akhir
eksekutif(@strSQL)
PERGI