laravel-soar - 在 Laravel 應用程式中輕鬆容易的優化 sql 語句的擴充套件包。
功能
- 支援基於啟發式演算法的語句優化
- 支援複雜查詢的多列索引優化(UPDATE, INSERT, DELETE, SELECT)
- 支援 EXPLAIN 資訊豐富解讀
- 支援 SQL 指紋、壓縮和美化
- 支援 Eloquent 查詢構建器方法生成 SQL 優化報告
原始碼連結
相關專案
- github.com/XiaoMi/soar
- github.com/guanguans/soar-php
- github.com/huangdijia/laravel-web-...
- github.com/wilbur-yu/hyperf-soar
- github.com/guanguans/think-soar
環境要求
- laravel >= 5.5
安裝
$ composer require guanguans/laravel-soar --dev -vvv
釋出服務
$ php artisan vendor:publish --provider="Guanguans\\LaravelSoar\\SoarServiceProvider"
使用
門面使用示例
$sql = Member::query()->select(['id', 'nickname'])->where('id', 100)->toRawSql();
\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 命令
生成 sql 評分報告示例
use App\Models\Member;
Member::query()
->select([
'id',
'nickname',
])
->where('id', 100)
// ->toSoarScore() // 生成 sql 評分報告
// ->dumpSoarScore() // 列印 sql 評分報告
->ddSoarScore() // 列印 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, 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,並且退出應用程式。
;
本作品採用《CC 協議》,轉載必須註明作者和本文連結
No practice, no gain in one's wit.
我的 Gitub