【问题标题】:Searching through database and the speed is slow查数据库,速度慢
【发布时间】:2018-08-01 17:46:15
【问题描述】:

我正在使用 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>

【问题讨论】:

  • 您需要代码方面的帮助吗?
  • 你并没有真正让我们离开这里。也许尝试发布一些代码sn-ps?根据我的经验,提高数据库读取速度的最佳方法是从如何设置数据库开始,然后是如何格式化查询,最后是减少业务逻辑的低效率。
  • 添加一些代码以便我们为您提供帮助。
  • 我只是编辑了我的帖子并添加了代码。

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


【解决方案1】:

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

我也总是安装Laravel debugbar。它可以深入了解您正在访问的视图上正在运行哪些查询,还可以让您花在每个查询上的时间,帮助您缩小范围。

【讨论】:

  • 我已经索引了它我不知道索引后该怎么办 这是我如何索引它 query('创建索引 Ix_cityandstate ON alls(cityandstate)'); if($connect){ echo"已创建"; }else{ echo"未创建"; } ?>
  • Marius,OP 已经发布了另外两个(基本相同)关于此的问题,因此可能值得检查一下已经给出的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多