Я пытаюсь автозаполнять названия городов из огромной таблицы sql. Мой код ниже работает, но очень медленный, а иногда и зависает, потому что у меня много повторных предложений. любой способ отфильтровать всю эту повторяющуюся строку, чтобы сделать ее быстрее? благодаряAutocompleteExtender от 65000 записей в sql-таблице
Public Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer) As String()
Dim strCn As String = "Data Source=sqlserver\sqlexpress;Initial Catalog=zip;User ID=sa;Password=xxx"
cn.ConnectionString = strCn
Dim cmd As New SqlClient.SqlCommand
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select * from zip_code Where City like @myParameter+'%'"
cmd.Parameters.AddWithValue("@myParameter", prefixText)
Try
cn.Open()
cmd.ExecuteNonQuery()
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
da.Fill(ds)
Catch ex As Exception
Finally
cn.Close()
End Try
dt = ds.Tables(0)
Dim txtItems As New List(Of String)()
Dim dbValues As String
For Each row As DataRow In dt.Rows
dbValues = row("City").ToString()
dbValues = dbValues.ToLower()
txtItems.Add(dbValues)
Next
Return txtItems.ToArray
Попробуйте заменить 'select *' на 'select distinct City' для начала. – J0e3gan
65 000 ничего. Надеюсь, вы выполните это в потоке, отличном от Dispatcher? – Darek