sql语句 的优化php,soar-PHP - SQL 语句优化器和重写器的 PHP 扩展包、 方便框架中 SQL 语句调优...

soar 开发的 PHP 扩展包,方便框架中 SQL 语句调优。

bVbuQKu?w=1425&h=717

项目链接

框架中使用

[ ] Symfony

[ ] Laravel

[ ] Lumen

[ ] Yii2

[ ] Slim

环境要求

PHP >= 5.6

ext-pdo

ext-json

安装

$ composer require guanguans/soar-php --dev

使用

下载 XiaoMi 开源的 SQL 优化器 soar,更多详细安装请参考 soar install

# macOS

$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.darwin-amd64

# linux

$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64

# windows

$ wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.windows-amd64

# 用其他命令或下载器下载均可以

初始化配置,更多详细配置请参考 soar config

方法一、运行时初始化配置

require_once __DIR__.'/vendor/autoload.php';

use Guanguans\SoarPHP\Soar;

$config = [

// 下载的 soar 的路径

'-soar-path' => '/Users/yaozm/Documents/wwwroot/soar-php/soar.darwin-amd64',

// 测试环境配置

'-test-dsn' => [

'host' => '127.0.0.1',

'port' => '3306',

'dbname' => 'database',

'username' => 'root',

'password' => '123456',

],

// 日志输出文件

'-log-output' => './soar.log',

// 报告输出格式: 默认 markdown [markdown, html, json]

'-report-type' => 'html',

];

$soar = new Soar($config);

方法二、配置文件初始化配置

vendor 同级目录下新建 .soar.dist 或者 .soar,内容参考 .soar.example,例如:

return [

// 下载的 soar 的路径

'-soar-path' => '/Users/yaozm/Documents/wwwroot/soar-php/soar.darwin-amd64',

// 测试环境配置

'-test-dsn' => [

'host' => '127.0.0.1',

'port' => '3306',

'dbname' => 'database',

'username' => 'root',

'password' => '123456',

],

// 日志输出文件

'-log-output' => './soar.log',

// 报告输出格式: 默认 markdown [markdown, html, json]

'-report-type' => 'html',

];

然后初始化

require_once __DIR__.'/vendor/autoload.php';

use Guanguans\SoarPHP\Soar;

$soar = new Soar();

配置优先级:运行时初始化配置 > .soar > .soar.dist

SQL 评分

方法调用:

$sql ="SELECT * FROM `fa_user` `user` LEFT JOIN `fa_user_group` `group` ON `user`.`group_id`=`group`.`id`;";

echo $soar->score($sql);

输出结果:

bVbuQKv?w=1916&h=1680

explain 信息解读

方法调用:

$sql = "SELECT * FROM `fa_auth_group_access` `aga` LEFT JOIN `fa_auth_group` `ag` ON `aga`.`group_id`=`ag`.`id`;";

// 输出 html 格式

echo $soar->htmlExplain($sql);

// 输出 md 格式

echo $soar->mdExplain($sql);

// 输出 html 格式

echo $soar->explain($sql, 'html');

// 输出 md 格式

echo $soar->explain($sql, 'md');

输出结果:

bVbuQKw?w=1910&h=956

语法检查

方法调用:

$sql = 'selec * from fa_user';

echo $soar->syntaxCheck($sql);

输出结果:

At SQL 1 : line 1 column 5 near "selec * from fa_user" (total length 20)

SQL 指纹

方法调用:

$sql = 'select * from fa_user where id=1';

echo $soar->fingerPrint($sql);

输出结果:

select * from fa_user where id = ?

SQL 美化

方法调用:

$sql = 'select * from fa_user where id=1';

var_dump($soar->pretty($sql));

输出结果:

SELECT

*

FROM

fa_user

WHERE

id = 1;

markdown 转化为 html

方法调用:

echo $soar->md2html("## 这是一个测试");

输出结果:

...

这是一个测试

...

soar 帮助

方法调用:

var_dump($soar->help());

输出结果:

···

'Usage of /Users/yaozm/Documents/wwwroot/soar-php/soar:

-allow-charsets string

AllowCharsets (default "utf8,utf8mb4")

-allow-collates string

AllowCollates

-allow-drop-index

AllowDropIndex, 允许输出删除重复索引的建议

-allow-engines string

AllowEngines (default "innodb")

-allow-online-as-test

AllowOnlineAsTest, 允许线上环境也可以当作测试环境

-blacklist string

指定 blacklist 配置文件的位置,文件中的 SQL 不会被评审。

···

执行任意 soar 命令

方法调用:

$command = "echo '## 这是另一个测试' | /Users/yaozm/Documents/wwwroot/soar-php/soar.darwin-amd64 -report-type md2html";

echo $soar->exec($command);

输出结果:

...

这是另一个测试

...

参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源主要含以下内容: ASP项目源码:每个资源含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源都附有详细的开发文档,文档内容括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值