美文网首页
在 Laravel 中轻松容易的优化 sql 语句的扩展包

在 Laravel 中轻松容易的优化 sql 语句的扩展包

作者: guanguans | 来源:发表于2021-06-14 19:17 被阅读0次

    laravel-soar - 在 Laravel 应用程序中轻松容易的优化 sql 语句的扩展包。

    score.png

    功能

    • 支持基于启发式算法的语句优化
    • 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
    • 支持 EXPLAIN 信息丰富解读
    • 支持 SQL 指纹、压缩和美化
    • 支持 Eloquent 查询构建器方法生成 SQL 优化报告

    源码链接

    相关项目

    环境要求

    • laravel >= 5.5

    安装

    $ 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()
    ;
    
    high-score.png
    // 查询构建器使用示例
    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 评分报告,并且退出应用程序。
    ;
    
    low-score.png

    生成 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 信息解读报告,并且退出应用程序。
    ;
    
    explain.png

    美化 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,并且退出应用程序。
    ;
    
    pretty.png

    其他使用示例

    \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 命令
    

    相关文章

      网友评论

          本文标题:在 Laravel 中轻松容易的优化 sql 语句的扩展包

          本文链接:https://www.haomeiwen.com/subject/ocmoeltx.html