2011-01-27 4 views
0

初心者はロジックフローに関する助けが必要です:この機能を処理する最も効率的な方法は何ですか?

私は、Asp.net Ajaxツールキットに同梱されているオートコンプリートエクステンダコントロールを使用しています。このエクステンダーは、ユーザーがテキストボックスに入力するたびにデータベースを照会する関数を実行するWebサービスに接続されます。私たちが作業するデータベースには何千ものレコードが含まれているので、パフォーマンスは私が狙っているものです。ここに私の機能は、Webサービスである:

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は配列をたどるよりもはるかに高速です。