从Datatable获取记录的最佳方法是什么?

时间:2012-08-05 15:26:37

标签: c# database vb.net multirec

我有一张桌子,其中包含约。 150000条记录。它可能会改变..我的意思是更多......我不知道。它是一个访问数据库(它的义务)我使用.net framework 3.0

vb.net或c#无所谓..

我使用了那段代码

    con = New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=db.mdb")
    cmd = New OleDbCommand("Select * from TAPU_GEMLIK", con)
    da = New OleDbDataAdapter(cmd)

    ds = New DataSet()
    da.Fill(ds)
    DgKayitlar.DataSource = ds.Tables(0)

好吧,我的程序会对记录应用一些过滤器。

我有两个问题

1-

    da.Fill(ds)
    DgKayitlar.DataSource = ds.Tables(0)

在这里,程序等待一段时间。如果记录增加,它将等待很多。我可以用它做什么?我以为我可以使用线程,但我不确定。

2-每个过滤查询数据库。过滤仅指一种条件,例如

其中Name = .....和Surname ......等等。

是查询数据库的好方法还是我必须从gridview获取查询结果?哪个可能更快或更好?

编辑:我无法分页。因为程序已经从数据库中搜索每条记录。首先,我需要从db获取所有记录。

3 个答案:

答案 0 :(得分:0)

如果过滤器很简单where Name=..... and Surname... etc.

我建议你去选项2但是在sql查询中进行过滤,你有Select * from TAPU_GEMLIK

答案 1 :(得分:0)

如果你必须从数据库中一次性加载所有数据,那么我可以建议你查询缓存结果集(除了优化DB ofcourse),因为它会减少你的结果集加载时间。但是,如果数据不经常变化,这只是有利的。此外,如果所有数据都已呈现给页面,那么我认为再次查询数据库进行搜索是没有意义的。使用网格搜索选项会更好更快。但是我必须告诉你,在页面上加载大量数据会挤压浏览器的生命,你可能会面临诸如反应迟钝等问题。

答案 2 :(得分:0)

您需要了解有关如何使用SQL查询数据的更多信息。

例如,您是否需要数据库中的所有列?或者你只需​​要一对。如果您只需要6个结果,请使用TOP command,例如“选择前6名。”

您选择的列/行越多,需要传输的数据就越多。移动的数据越多,查询就越慢。

在服务器上进行过滤。如果您的数据将始终在特定列上进行过滤,请使用Index。索引将大大提高过滤性能。

有效查询的关键是过滤索引列,只返回您需要的内容。