Долгое время просмотра для поиска данных - PullRequest
1 голос
/ 16 июня 2019

Я создал приложение, позволяющее пользователям просматривать данные из моей базы данных.Код работает, но единственная проблема заключается в том, что загрузка результатов поиска заняла много времени.Это произошло из-за того, что в каждой таблице моей базы данных Access было около 1 миллиона строк данных.Загрузка формы окна также заняла некоторое время ... Кто-нибудь знает, как сократить время поиска данных?

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 голосов
/ 18 июня 2019

Нет смысла тянуть весь стол.

Банковские автоматы не загружают все аккаунты, и ПОТОМ позволяют искать.

Веб-браузер не загружает ВЕСЬ интернет, и ПОТОМ позволяет искать.

1 миллион строк - это не много данных для Access.

Просто поместите несколько текстовых полей или что-то подобное в верхней части формы.

Позвольте пользователю ввести номер счета или некоторые другие критерии и ТОГДА загрузить сетку.

Вы не хотите использовать сетку для поиска, но только для отображения данных.

Итак, скажем, мы ищем фильмы в данном году.

Возможно, у вас вверху есть текстовое поле с именем номера детали Usr вводит номер детали или, например, год фильма, тогда ваш sql становится:

strSQL = "your sql”

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

' code to fill the grid.

Теперь сетка будет загружать ТОЛЬКО фильмы этого года. Вы можете добавить дополнительные поля поиска.

Убедитесь, что для любого столбца, по которому вы ведете поиск, существует индекс.

Даже при 1 миллионе строк извлечение и ограничение результатов, которые вы отправляете в таблицу, должно происходить ОЧЕНЬ быстро. Механизм доступа к данным ОЧЕНЬ быстр для таких операций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...