laravel-soar - 在 Laravel 应用程序中轻松容易的优化 sql 语句的扩大包。
性能
- 反对基于启发式算法的语句优化
- 反对简单查问的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
- 反对 EXPLAIN 信息丰盛解读
- 反对 SQL 指纹、压缩和丑化
- 反对 Eloquent 查问构建器办法生成 SQL 优化报告
源码链接
- https://github.com/guanguans/laravel-soar
相干我的项目
- https://github.com/XiaoMi/soar
- https://github.com/guanguans/soar-php
- https://github.com/huangdijia/laravel-web-soar
- https://github.com/wilbur-yu/hyperf-soar
- https://github.com/guanguans/think-soar
环境要求
装置
$ composer require guanguans/laravel-soar --dev -vvv
公布服务
$ php artisan vendor:publish --provider="Guanguans\\LaravelSoar\\SoarServiceProvider"
应用
生成 sql 评分报告示例
use App\Models\Member; Member::query() ->select([ 'id', 'nickname', ]) ->where('id', 100) // ->toSoarScore() // ->dumpSoarScore() ->ddSoarScore();
// 查问构建器应用示例DB::table('yb_member') ->select('*') ->join('yb_member_account as yb_member_account', 'yb_member_account.member_id', '=', 'yb_member.id') ->whereRaw('1 <> 1') ->where('yb_member.nickname', 'like', 'admin') ->where('yb_member.username', 'like', '%admin%') ->whereRaw("substring(yb_member.username, 1, 5) = 'admin'") ->whereIn('yb_member.id', [110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120]) ->orWhereNotNull('yb_member.realname') ->groupByRaw("yb_member.status, '100'") ->having('yb_member.id', '>', '100') ->inRandomOrder() // ->toSoarScore() // 生成 sql 评分报告 // ->dumpSoarScore() // 打印 sql 评分报告 ->ddSoarScore() // 打印 sql 评分报告,并且退出应用程序。;
生成 explain 信息解读报告示例
// 查问构建器应用示例DB::table('yb_member') ->select('*') ->join('yb_member_account as yb_member_account', 'yb_member_account.member_id', '=', 'yb_member.id') ->whereRaw('1 <> 1') ->where('yb_member.nickname', 'like', 'admin') ->where('yb_member.username', 'like', '%admin%') ->whereRaw("substring(yb_member.username, 1, 5) = 'admin'") ->whereIn('yb_member.id', [110, 120]) ->orWhereNotNull('yb_member.realname') ->groupByRaw("yb_member.status, '100'") ->having('yb_member.id', '>', '100') ->inRandomOrder() // ->toSoarHtmlExplain() // 生成 explain 信息解读报告 // ->dumpSoarHtmlExplain() // 打印 explain 信息解读报告 ->ddSoarHtmlExplain() // 打印 explain 信息解读报告,并且退出应用程序。;
丑化 sql 语句
// 查问构建器应用示例DB::table('yb_member') ->select('*') ->join('yb_member_account as yb_member_account', 'yb_member_account.member_id', '=', 'yb_member.id') ->whereRaw('1 <> 1') ->where('yb_member.nickname', 'like', 'admin') ->where('yb_member.username', 'like', '%admin%') ->whereRaw("substring(yb_member.username, 1, 5) = 'admin'") ->whereIn('yb_member.id', [110, 120]) ->orWhereNotNull('yb_member.realname') ->groupByRaw("yb_member.status, '100'") ->having('yb_member.id', '>', '100') ->inRandomOrder() // ->toSoarPretty() // 生成丑化后的 sql // ->dumpSoarPretty() // 打印丑化后的 sql ->dumpSoarPretty() // 打印丑化后的 sql,并且退出应用程序。;
其余应用示例
\Soar::score($sql); // 生成 sql 评分报告\Soar::mdExplain($sql); // 生成 markdown 格局的 explain 信息解读报告\Soar::htmlExplain($sql); // 生成 html 格局的 Explain 信息解读报告\Soar::syntaxCheck($sql); // sql 语法查看\Soar::fingerPrint($sql); // 生成 sql 指纹\Soar::pretty($sql); // 丑化 sql\Soar::md2html($sql); // 将 markdown 格局内容转化为 html 格局内容\Soar::help($sql); // 输入 soar 帮忙命令内容\Soar::exec($command); // 执行任意 soar 命令