Rumah  >  Artikel  >  rangka kerja php  >  推荐!在Laravel中轻松容易的优化sql语句的扩展包

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

藏色散人
藏色散人ke hadapan
2021-06-17 14:46:482670semak imbas

下面由laravel教程栏目给大家介绍在Laravel中轻松容易的优化sql语句的扩展包(laravel-soar),希望对需要的朋友有所帮助!

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

score.png

功能

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

源码链接

  • github.com/guanguans/laravel-soar

相关项目

  • github.com/XiaoMi/soar
  • github.com/guanguans/soar-php
  • github.com/huangdijia/laravel-web-soar
  • 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 评分报告,并且退出应用程序。
;

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(&#39;1 <> 1&#39;)
    ->where(&#39;yb_member.nickname&#39;, &#39;like&#39;, &#39;admin&#39;)
    ->where(&#39;yb_member.username&#39;, &#39;like&#39;, &#39;%admin%&#39;)
    ->whereRaw("substring(yb_member.username, 1, 5) = &#39;admin&#39;")
    ->whereIn(&#39;yb_member.id&#39;, [110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120])
    ->orWhereNotNull(&#39;yb_member.realname&#39;)
    ->groupByRaw("yb_member.status, &#39;100&#39;")
    ->having(&#39;yb_member.id&#39;, &#39;>&#39;, &#39;100&#39;)
    ->inRandomOrder()
    // ->toSoarScore()   // 生成 sql 评分报告
    // ->dumpSoarScore() // 打印 sql 评分报告
    ->ddSoarScore()      // 打印 sql 评分报告,并且退出应用程序。
;

low-score.png

生成 explain 信息解读报告示例

// 查询构建器使用示例
DB::table(&#39;yb_member&#39;)
    ->select(&#39;*&#39;)
    ->join(&#39;yb_member_account as yb_member_account&#39;, &#39;yb_member_account.member_id&#39;, &#39;=&#39;, &#39;yb_member.id&#39;)
    ->whereRaw(&#39;1 <> 1&#39;)
    ->where(&#39;yb_member.nickname&#39;, &#39;like&#39;, &#39;admin&#39;)
    ->where(&#39;yb_member.username&#39;, &#39;like&#39;, &#39;%admin%&#39;)
    ->whereRaw("substring(yb_member.username, 1, 5) = &#39;admin&#39;")
    ->whereIn(&#39;yb_member.id&#39;, [110, 120])
    ->orWhereNotNull(&#39;yb_member.realname&#39;)
    ->groupByRaw("yb_member.status, &#39;100&#39;")
    ->having(&#39;yb_member.id&#39;, &#39;>&#39;, &#39;100&#39;)
    ->inRandomOrder()
    // ->toSoarHtmlExplain()   // 生成 explain 信息解读报告
    // ->dumpSoarHtmlExplain() // 打印 explain 信息解读报告
    ->ddSoarHtmlExplain()      // 打印 explain 信息解读报告,并且退出应用程序。
;

explain.png

美化 sql 语句

// 查询构建器使用示例
DB::table(&#39;yb_member&#39;)
    ->select(&#39;*&#39;)
    ->join(&#39;yb_member_account as yb_member_account&#39;, &#39;yb_member_account.member_id&#39;, &#39;=&#39;, &#39;yb_member.id&#39;)
    ->whereRaw(&#39;1 <> 1&#39;)
    ->where(&#39;yb_member.nickname&#39;, &#39;like&#39;, &#39;admin&#39;)
    ->where(&#39;yb_member.username&#39;, &#39;like&#39;, &#39;%admin%&#39;)
    ->whereRaw("substring(yb_member.username, 1, 5) = &#39;admin&#39;")
    ->whereIn(&#39;yb_member.id&#39;, [110, 120])
    ->orWhereNotNull(&#39;yb_member.realname&#39;)
    ->groupByRaw("yb_member.status, &#39;100&#39;")
    ->having(&#39;yb_member.id&#39;, &#39;>&#39;, &#39;100&#39;)
    ->inRandomOrder()
    // ->toSoarPretty()   // 生成美化后的 sql
    // ->dumpSoarPretty() // 打印美化后的 sql
    ->dumpSoarPretty()    // 打印美化后的 sql,并且退出应用程序。
;

pretty.png《相关推荐:最新的五个Laravel视频教程                             

Atas ialah kandungan terperinci 推荐!在Laravel中轻松容易的优化sql语句的扩展包. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam