Package

Tpetry Laravel Mysql Explain

Get MySQL EXPLAIN plans that are understandable for humans

Package

tpetry/laravel-mysql-explain

View on GitHub →

Laravel MySQL Explains For Humans

MySQL Query optimization with the EXPLAIN command is unnecessarily complicated: The output contains a lot of cryptic information that is incomprehensible or entirely misleading.

This Larvel package collects many query metrics that will be sent to explainmysql.com and transformed to be much easier to understand.

Installation

You can install the package via composer:

composer require tpetry/laravel-mysql-explain

Usage

Query Builder

Three new methods have been added to the query builder for very easy submission of query plans:

Type Action
explainForHumans returns URL to processed EXPLAIN output
dumpExplainForHumans dumps URL to processed EXPLAIN output and continue normal execution
ddExplainForHumans dumps URL to processed EXPLAIN output and stops execution
// $url will be e.g. https://explainmysql.com/e/C0Omak70mLEXfok1a7Oo1n
$url = Film::where('description', 'like', '%astronaut%')
->explainForHumans();
 
// URL to EXPLAIN will be printed to screen
$users = Film::where('description', 'like', '%astronaut%')
->dumpExplainForHumans()
->get();
 
// URL to EXPLAIN will be printed to screen & execution is stopped
$users = Film::where('description', 'like', '%astronaut%')
->ddExplainForHumans()
->get();

Raw Queries

In some cases you are executing raw SQL queries and don't use the query builder. You can use the MysqlExplain facade to get the EXPLAIN url for them:

use Tpetry\MysqlExplain\Facades\MysqlExplain;
 
// $url will be e.g. https://explainmysql.com/e/H1pfKQ7FH3HnH87dS64Wk1
$url = MysqlExplain::submitQuery(
DB::connection('mysql'),
'SELECT * FROM actor WHERE first_name = ?',
['PENEL\'OPE'],
);

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.

Tpetry Laravel Mysql Explain Related Articles

MySql Explain with Tobias Petry image

MySql Explain with Tobias Petry

Read article
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
PhpStorm logo

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm
Pushsilver logo

Pushsilver

Pushsilver is simple invoicing for freelancers and small studios — send polished invoices, automate reminders, and get paid on time without the bloat.

Pushsilver
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing