laravel-soar - 在 Laravel 应用程序中轻松容易的优化 sql 语句的扩展包。
功能
- 支持基于启发式算法的语句优化
- 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
- 支持 EXPLAIN 信息丰富解读
- 支持 SQL 指纹、压缩和美化
- 支持 Eloquent 查询构建器方法生成 SQL 优化报告
源码链接
相关项目
环境要求
安装
$ composer require guanguans/laravel-soar:^1.1
发布服务
$ php artisan vendor:publish --provider="Guanguans\\LaravelSoar\\SoarServiceProvider"
使用
门面使用示例
$sql = Member::query()->select(['id', 'nickname'])->where('id', 100)->toRawSql();
\Soar::score($sql);
\Soar::mdExplain($sql);
\Soar::htmlExplain($sql);
\Soar::syntaxCheck($sql);
\Soar::fingerPrint($sql);
\Soar::pretty($sql);
\Soar::md2html($sql);
\Soar::help($sql);
\Soar::exec($command);
生成 sql 评分报告示例
use App\Models\Member;
Member::query()
->select([
'id',
'nickname',
])
->where('id', 100)
->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,并且退出应用程序。
;