2022年5月

面对日益增大的数据表容量,mysql查询性能也随之下降。这时候就需要寻找一套解决方案来应对将来的局面。根据网络的过往经验,现将一些基本规范进行总结归纳。方便日后所用。

尽量用单表查询,禁止多于3表的join查询
禁止使用select * from 语句,尽量只或许需要的字段。
避免冗余的排序
全模糊查询无法使用索引,应尽可能避免
使用in代替or
禁止隐式装换
禁止使用负项查询 如not in , not like ,!=这种

controller

/**

  • 自定义selectpage
    */

public function select_goods(){

list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$list = $this->model
            ->with(['goodslists'])
            ->field('goodslists.name as name,goods_id')
            ->where($where)
            ->order($sort, $order)
            ->paginate($limit);
    $result = array("total" => $list->total(), "rows" => $list->items());
    return json($result);

}

model

public function goodslists()
{

return $this->belongsTo('app\admin\model\gascard\Goods', 'goods_id', 'id', [], 'LEFT')->setEagerlyType(0);

}