我正在使用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>
答案 0 :(得分:0)
Eloquent是Laravel的活跃记录模式实现。当你处理一些记录时,它真的很棒。但它带有性能价格。我建议使用Laravel's query builder来处理大量记录。您会立即看到性能提升。此外,对于您要查询的属性,正确索引数据库也很有帮助。
我也经常安装Laravel debugbar。它可以深入了解您正在访问的视图上运行的查询,还可以节省您在每个查询上花费的时间,从而帮助您缩小范围。