sleeping-owl / with-join

Package to convert Eloquent BelongsTo subqueries into one query with left join
MIT License
92 stars 24 forks source link

package join performance #20

Open fico7489 opened 6 years ago

fico7489 commented 6 years ago

actually this

select 
     `street`.`<…>` as `__f__street---<…>`,
     `type`.`<…>` as `__f__street---__f__type---<…>`,
     `district`.`<…>` as `__f__street---__f__district---<…>`,
     `street_images`.* 
from 
    `street_images` 
left join 
    `streets` as `street` on `street`.`id` = `street_images`.`street_id` 
left join 
    `street_types` as `type` on `type`.`id` = `street`.`street_type_id` 
left join 
    `districts` as `district` on `district`.`id` = `street`.`district_id` 
order by `sort` asc 
limit 1

instead of this

select `street_images`.* from `street_images` order by `sort` asc limit 1

select `streets`.* from `streets` where `streets`.`id` in (?) order by `title` asc

select * from `street_types` where `street_types`.`id` in (?) order by `title` asc

select * from `districts` where `districts`.`id` in (?) order by `sort` asc

it is not faster and uses more memory.