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 & """> < geri</a>"
End If
If intPage < intPages Then
DbdenGelen = DbdenGelen + "<a href=""arananlar.aspx?sayfa=" & intPage + 1 & """> ileri > </a>"
End If
DbBag.Close()
DbBag.Dispose()
DbBag = Nothingmantığı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.