根据定义(至少从我所见过的),sargable意味着查询能够使查询引擎优化查询使用的执行计划.我已经尝试过查找答案,但似乎没有太多关于主题的内容.所以问题是,什么做或不做一个SQL查询sargable?任何文件将不胜感激.
供参考:SARGable
我试图在Eloquent ORM中执行以下查询,似乎无法执行MySQL函数 -
$post = Post::where('slug', '=', $slug)->where('YEAR(created_at)', '=', $year)->first();
Run Code Online (Sandbox Code Playgroud)
我得到的例外情况如下 - 消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'YEAR(created_at)' in 'where clause'
SQL: SELECT * FROM `posts` WHERE `slug` = ? AND `YEAR(created_at)` = ? LIMIT 1
Bindings: array (
0 => 'placeholder',
1 => 2013,
)
Run Code Online (Sandbox Code Playgroud)
所以,基本上,它将YEAR()MySQL函数封装为一列.有没有办法在不使用原始查询的情况下执行此操作?