Проблемы с производительностью автозаполнения jQuery

#jquery #autocomplete #database-performance

#jquery #автозаполнение #база данных-производительность

Вопрос:

Я использую функцию автозаполнения Jquery для загрузки некоторых ItemCodes из таблицы Items в базе данных SQL Server.

Таблица элементов содержит: коды элементов, название элемента, Описание элемента

Я могу запустить функцию автозаполнения, но проблема в том, что таблица элементов содержит около 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
  

Комментарии:

1. Оптимизируйте код, добавьте индексы к столбцам.

2. взгляните на это pontikis.net/blog/jquery-ui-autocomplete-step-by-step

3. @Justinas: у нас уже есть индекс для требуемого столбца, здесь я отредактировал свой вопрос с кодом, можете ли вы предложить области, где я могу оптимизировать код. Спасибо за ваше время

4. Какие индексы у вас есть в каких столбцах?

5. @Kermani : Я проверил статью mate, в ней рассказывается о создании автозаполнения. В моем случае у меня все заработало, но производительность замедлилась, поскольку в таблице было около 230 000 записей.