Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel、数据表、低效查询_Php_Sql Server_Laravel_Datatables - Fatal编程技术网

Php Laravel、数据表、低效查询

Php Laravel、数据表、低效查询,php,sql-server,laravel,datatables,Php,Sql Server,Laravel,Datatables,一些开发人员使用Laravel和Datatables开发了一个PHP软件。 当我看到应用程序生成的数据库查询时,我发现其中一个查询效率非常低。示例(涉及的列列表从一个软件功能更改为另一个): 所涉及的表很大,这些查询不仅需要20-30秒才能执行,而且还会影响服务器的总体性能。 我不喜欢的是对所有列都应用了许多相似项,特别是对那些应用于非字符串的列(比如上次修改的日期)。 我的建议是: 1) 对所有非字符串使用=而不是LIKE:数字、单字符代码,如性别M/F、布尔值 2) 配置Microsoft

一些开发人员使用Laravel和Datatables开发了一个PHP软件。 当我看到应用程序生成的数据库查询时,我发现其中一个查询效率非常低。示例(涉及的列列表从一个软件功能更改为另一个):

所涉及的表很大,这些查询不仅需要20-30秒才能执行,而且还会影响服务器的总体性能。 我不喜欢的是对所有列都应用了许多相似项,特别是对那些应用于非字符串的列(比如上次修改的日期)。 我的建议是:

1) 对所有非字符串使用=而不是LIKE:数字、单字符代码,如性别M/F、布尔值

2) 配置Microsoft SQL Server中包含的全文搜索,并编写包含(列,'XYZ'),而不是类似的内容

开发人员的反对意见是,Laravel和Datatables生成这些查询,对此我们无能为力


是否可以在不改变库代码的情况下配置Laravel和Datatables,为每一列指定是使用LIKE、=还是CONTAINS?

Eloquent通常用于创建更简单的模型查询

对于更复杂的SQL查询,请使用查询生成器

这是关于如何使用它的文档中的一个示例

$users = DB::table('users')
                     ->select(DB::raw('count(*) as user_count, status'))
                     ->where('status', '<>', 1)
                     ->groupBy('status')
                     ->get();
参考资料:

$users = DB::table('users')
                     ->select(DB::raw('count(*) as user_count, status'))
                     ->where('status', '<>', 1)
                     ->groupBy('status')
                     ->get();
$results = DB::select('select * from users where id = :id', ['id' => 1]);