Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Datatable获取记录的最佳方法是什么?_C#_Database_Vb.net_Multirec - Fatal编程技术网

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

C# 从Datatable获取记录的最佳方法是什么?,c#,database,vb.net,multirec,C#,Database,Vb.net,Multirec,我有一个包含大约150000条记录的表。这可能是改变。。我是说更多。。我不知道。这是一个访问数据库,这是我使用.NETFramework 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

我有一个包含大约150000条记录的表。这可能是改变。。我是说更多。。我不知道。这是一个访问数据库,这是我使用.NETFramework 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-

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

2-每个过滤器查询数据库。筛选器仅表示一个条件,例如

其中Name=。。。。。姓。。。等等

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


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

如果过滤器很简单,其中Name=。。。。。姓。。。等等


我建议您选择选项2,但在sql查询中进行筛选,您可以从TAPU_GEMLIK选择*如果您必须一次从数据库加载所有数据,那么除了优化数据库之外,我还可以建议缓存您查询的结果集,因为这将缩短结果集加载时间。但这只有在数据不经常变化的情况下才是有利的。此外,如果所有数据都已呈现到页面,那么我认为再次查询数据库进行搜索是没有意义的。使用grid的搜索选项会更好更快。但是,我必须告诉您,在一个页面上加载大量数据将使浏览器的寿命缩短,您可能会面临诸如无响应等问题。

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

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

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

在服务器上执行筛选。如果您的数据总是在特定列上进行筛选,请使用。索引将大大提高过滤性能


高效查询的关键是对索引列进行筛选,并只返回您需要的内容。

yes筛选很简单,但包含一些条件。。最多6个。感谢您的建议您能再解释一下为什么不能使用分页来解析Q1吗?@HarunAbi请尝试获取sql中的前6名query@UmairKhan,用户必须在一个页面中查看所有转售,然后必须使用一些筛选器搜索某些记录。。如果要分页,那就没什么意义了。我想我无法解释。。很难说出我的意思,但我不能用it@HatSoft,你不明白我的意思,我想说的是,条件的计数将最多为6。比如名字在哪里。。姓、父名、街道。。它不是一个Web应用程序,而且数据库的数据从不改变。我的项目只是在DATAGRIDVIEW中搜索和显示结果。你可能想考虑实现无限滚动,因为你不能使用PAGIN。无论如何,还是要部分地获取值?我不是在编写web应用程序。如果您使用DataGridView,您可以使用虚拟模式,使其仅对视图中的项目执行布局。@AndrewMorton,谢谢您的提示。我想我无法很好地解释:结果将超过150.000。。我的意思是6是条件,它们是where的参数。例如其中姓名='..'和姓氏='..'+。。。。。这些条件是6。但记录超过15万。那么我就不需要使用最高指挥权了。。感谢您的关注:在这种情况下,请查看动态where子句。您还需要实现一种分页类型的安排,当用户向下滚动时,应用程序将继续加载更多行,就像FaceBook的工作方式一样。
    da.Fill(ds)
    DgKayitlar.DataSource = ds.Tables(0)