关于php:laravelsoar-在-Laravel-中轻松容易的优化-sql-语句的扩展包

42次阅读

共计 2822 个字符,预计需要花费 8 分钟才能阅读完成。

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

环境要求

  • 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()
;

// 查问构建器应用示例
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 命令 

正文完
 0