较长的浏览时间以进行数据搜索

时间:2019-06-16 04:36:42

标签: vb.net winforms ms-access

我创建了一个应用程序,以允许用户浏览我的数据库中的数据。该代码有效,但是唯一的问题是加载搜索结果花了很多时间。这是由于Access数据库的每个表中都有大约一百万行数据。加载窗口表单还需要一些时间...有人知道如何缩短数据搜索时间吗?

Private Sub MovieBrowser_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=1MDb.accdb;Persist Security Info=False;")
        strSQL = "SELECT m.primaryTitle AS MovieTitle, m.startYear AS StartYear, m.runtimeMinutes AS Runtime, m.genres AS Genre, d.primaryName AS Director, c.writers AS Writer, r.averageRating AS Rating, d.primaryProfession AS Profession, ('www.imdb.com/title/' + m.tconst) AS URL From Movie m, Director d, Crew c, Rating r WHERE m.tconst=c.tconst AND d.nconst = c.directors AND r.tconst=m.tconst"

        conn.Open()
        da = New OleDbDataAdapter(strSQL, conn)
        Dim ds As New DataSet("Movies1")
        'fills the dataset with data
        da.Fill(ds, "Movies1")
        'assign the datasource to the DataGridView
        DataGridView1.DataSource = ds.Tables("Movies1")
        conn.Close()

        txtSrchbar.Focus()
End Sub

1 个答案:

答案 0 :(得分:0)

拉整个桌子毫无意义。

银行机器不会加载每个帐户,然后您可以进行搜索。

网络浏览器无法加载整个Internet,然后您可以进行搜索。

一百万行对于Access来说不是很多数据。

简单地在窗体顶部放置一些文本框或类似的框。

让用户输入发票编号或其他条件,然后加载表格。

您不想使用网格进行搜索,而只想显示数据。

因此,假设我们要搜索给定年份的电影。

您可能在顶部有一个名为零件号的文本框。 usr输入部件号,或说电影年份,则您的sql变为:

strSQL = "your sql”

strSQL = strSQL & " AND MovieYear = " & me.txtMyear

' code to fill the grid.

现在,网格将仅加载该年的电影。您可以添加其他搜索框。

确保您搜索的任何列都存在索引。

即使具有100万行,拉出并限制发送到网格的结果也应该非常快。对于这种操作,访问数据引擎非常快。