JQuery自动填充性能问题

时间:2014-07-01 09:30:46

标签: jquery autocomplete database-performance

我正在使用Jquery自动完成功能从SQL Server DB中的Items表加载一些ItemCodes。

项目表包含:项目代码,项目名称,项目描述

我能够自动完成功能,但问题是Items表包含大约230,000条记录,搜索速度较慢。

我已经从第5个字符而不是第2个或第3个字符启用了自动完成功能。然而它仍然很慢..结果在30秒内加载,这是加载自动完成的很长时间。我知道这是由于我正在处理的记录数量。

我能想到的一个想法(可能完全错误)是仅在匹配输入字符串的记录数小于20时才加载下拉列表。

有关如何改善表现的任何建议吗?


修改1

HTML页面:

function SearchText() {
    $(".autosuggest").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "../My_Service.aspx/GetAutoCompleteData",
                data: "{'ItemSubStr':'" + document.getElementById( "<%=txtCISearchInput.ClientID%>").value + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    alert("Error");
                }
            });
        }
    });
}

在ASP.Net

<WebMethod()> _
Public Shared Function GetAutoCompleteData(ByVal ItemSubStr As String) As List(Of String)
    Dim result As New List(Of String)()
    If ItemSubStr.Length < 4 Then
        Return result
    End If
    Dim sConnection As String = "XXXXXXXXX"
    Using Con As New SqlConnection(sConnection)
        Con.Open()
        Using Com As New SqlCommand("select distinct ItemCodes from Items where ItemCodes  like '%" + ItemSubStr + "%' order by 1", Con)
            Using RDR = Com.ExecuteReader()
                If RDR.HasRows Then
                    Do While RDR.Read
                        result.Add(RDR.Item("ItemCodes").ToString())
                    Loop
                End If
            End Using
        End Using
        Con.Close()
    End Using
    Return result
End Function

0 个答案:

没有答案