通过数据库搜索速度很慢

时间:2018-02-22 00:44:34

标签: javascript laravel jquery-ui jquery-ui-autocomplete

我正在使用Laravel jQuery UI自动完成来搜索数据库。它有效,但它太慢了。我知道我的数据库中有38432项,但我不知道这是不是问题。如何让搜索结果更快出现?

public function aa(Request $request){

            $term = $request->get('term');
            $t=str_replace(" ", ", ", $term);
            $tt=str_replace(",", ", ", $term);



    //$queries=Profile::distinct('cityandstate','LIKE','%'.$term.'%')->take(5)->get();
    $queries = all::where('cityandstate', 'like',  $term . '%')->orWhere('cityandstate',$t)->orWhere('cityandstate',$tt)->take(10)->get();



     foreach ($queries as $query)
    {
        $results[] = ['value' => $query->cityandstate ];

    }       

    return response()->json($results);

}

JavaScript的:

    <script type="text/javascript">
  $(document).ready(function(){

      $( function() {
          $( "#location-input" ).autocomplete({
            //html : html,
            source: "display-searches",
            minLength: 0,
            select:function(e,ui) { 
$("#location-input").val(ui.item.label);


            }
        } );
      } );

  });

    </script>

1 个答案:

答案 0 :(得分:0)

Eloquent是Laravel的活跃记录模式实现。当你处理一些记录时,它真的很棒。但它带有性能价格。我建议使用Laravel's query builder来处理大量记录。您会立即看到性能提升。此外,对于您要查询的属性,正确索引数据库也很有帮助。

我也经常安装Laravel debugbar。它可以深入了解您正在访问的视图上运行的查询,还可以节省您在每个查询上花费的时间,从而帮助您缩小范围。