多表联查的sql语句,公司说数据太多很卡,让我优化一下,看了大半天了实在是没思路,in,or,<>这些放弃索引的关键字都占用了,这种sql还有优化的空间嘛?
SELECT
y_mo_pai.person_type,
y_person.origin_type,
y_mo_pai.create_time ,
y_mo_pai.id,
y_mo_pai.NAME,
y_mo_pai.type,
y_mo_pai.mobile,
y_mo_pai.id_card,
y_mo_pai.is_contact,
y_mo_pai.update_time,
y_mo_pai.department_id,
y_mo_pai.out_of_city_name,
y_mo_pai.red_code_reason
FROMy_mo_pai
LEFT JOIN y_person ON y_person.mobile = y_mo_pai.mobile
WHERE
((y_person.origin_type IN ( "省漫", "省大数据", "省", "市公安", "省政务平台" ) or
y_mo_pai.person_type = 1
)
AND ( y_mo_pai.del_flag = 0 )
and y_person.origin_type <>"自主报备")
GROUP BY
y_mo_pai.id
ORDER BY
y_mo_pai.create_time DESC
LIMIT 10
where 里的条件应该可以放到on 里,然后直接用join吧?用left join和where筛选会慢很多