2011-01-27 3 views
0

новичкам нужна помощь с логическим потоком:Каков наиболее эффективный способ обработки этой функции?

Я использую автоматическое управление расширением Extender, которое поставляется с набором инструментов Asp.net Ajax. Этот расширитель подключается к веб-службе, которая будет запускать функцию, которая запрашивает базу данных каждый раз, когда пользователь вводит текст в текстовое поле. В базе данных, с которой мы будем работать, будут тысячи и тысячи записей, поэтому производительность - это то, что я снимаю. Вот моя функция в веб-службы:

Public Function PatronList(ByVal prefixText As String, ByVal count As Integer) As String() 

    Dim MyPatrons As New List(Of String) 

    Dim MyConn = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
    Dim sqlPatronList As New SqlDataSource(MyConn, "spBarredList " & prefixText) 
    Dim tblPatronList As System.Data.DataView = sqlPatronList.Select(New DataSourceSelectArguments) 

    Dim CurPatronRow As Long 
    Dim MaxPatronRow As Long = tblPatronList.Count 
    For CurPatronRow = 0 To MaxPatronRow - 1 

     MyPatrons.Add(tblPatronList.Item(CurPatronRow).Item("FullName")) 
    Next 

    Return MyPatrons.ToArray 

End Function 

«spBarredList» хранимая процедура, которая делает подобное заявление на 3 колонки, когда 3-х символов передаются в Так вот мой вопрос:.

было бы более эффективны для этого, или просто выберите все записи в наборе данных, добавьте их в массив и затем выполните поиск в массиве? Также плохо, что каждый экземпляр источника и списка создается каждый раз при запуске этой функции?

Заранее спасибо.

ответ

1

Как правило, лучше, чтобы SQL выполняла фильтрацию (с точки зрения эффективности). Это, конечно, предполагается, что ваш SP не ужасно неэффективен. В общем случае SQL намного быстрее при фильтрации данных, чем при перемещении массива.

Смежные вопросы