veri tabanının tipini ve büyüklüğünü bilmiyorum. fakat 100.000 kayıt bulunan bir veritabanından dataset + datalist ile listelemek cpu yu aşırı kasar.

Kendi video sitemde aranan kelimeler (yaklaşık 150.000 record) için kullandığım bir class var. istersen bunu kullanabilirsin. cpu ve ram ide şişirmez.

classın bir kısmını anlayabileceğin şekilde basitleştirilmiş halini veriyorum. projene istediğin şekilde dahil edebilirsin. Örnek Asp.Net 2.0 + Mssql Server içindir.

Tablo yapısı
id         |      text       |     hit
------------------------------------------
int (P.U)  |  varchar(255)   |     int
Kod
    Dim DbdenGelen As String
    Dim DbBag As SqlConnection
    Dim DbBagString As String = ConfigurationManager.ConnectionStrings("MsSql").ConnectionString
    DbBag = New SqlConnection(DbBagString)
    DbBag.Open()
    Dim DbKomut = New SqlDataAdapter("select id from arananlar", DbBag)
    Dim DS = New DataSet()
    DbKomut.Fill(DS)
    Dim ToplamKayit = DS.Tables(0).Rows.Count.ToString()
    DS = Nothing
    DbKomut.Dispose()
    DbKomut = Nothing
    Dim SayfaNo = Request.QueryString("sayfa")
    Dim intPage As String = SayfaNo
    If intPage = "" Or Not IsNumeric(intPage) Or intPage = "0" Then
        intPage = Int(1)
    Else
        intPage = Int(intPage)
    End If
    ' Burada kaçar kaçar listeleneceğini belirtiyorsun
    Dim intPageSize As Integer = Int(10)
    Dim intPageSizeA As Integer = intPageSizeA
    Session.LCID = "1055"
    Dim intPages As Integer
    If InStr(ToplamKayit / intPageSize, ",") = 0 Then
        intPages = Int(ToplamKayit / intPageSize)
    Else
        intPages = Int(ToplamKayit / intPageSize) + 1
    End If
    If intPage > intPages Then intPage = intPages
    Dim intStart As Integer = intPage * intPageSize
    If intPage = intPages Then
        intPageSize = ToplamKayit - (intStart - intPageSize)
    End If
    If intStart = 0 Then intStart = IntPageSizeA
    DbKomut = New SqlCommand("select * from ( select top " & intPageSize & " * from (select top " & intStart & " * from arananlar order by id desc ) as newtbl order by id asc) as newtbl2 order by id desc", DbBag)
    Dim AlinanVeriL As SqlDataReader
    AlinanVeriL = DbKomut.ExecuteReader()
    While AlinanVeriL.Read
           DbdenGelen = DbdenGelen + AlinanVeriL.Item("text")
    End While
    AlinanVeriL.Close()
    DbKomut.Dispose()
    AlinanVeriL = Nothing
    DbKomut = Nothing
    If intPage > 1 Then
        DbdenGelen = DbdenGelen + "<a href=""arananlar.aspx?sayfa=" & intPage - 1 & """> &lt; geri</a>"
    End If
    If intPage < intPages Then
        DbdenGelen = DbdenGelen + "<a href=""arananlar.aspx?sayfa=" & intPage + 1 & """> ileri &gt; </a>"
    End If
    DbBag.Close()
    DbBag.Dispose()
    DbBag = Nothing
mantığını görmen açısından kodu verdim. esasen kod c# dir, vb.net e çevirirken yazım yanlışım olmuş olabilir, umarım yardımcı olmuşumdur.