放栗子。
首先我是查询省市区的,省市区都在一张表中,先查看原来运行比较慢的sql。
SELECT CAST(GROUP_CONCAT(`name`)AS CHAR) FROM(
SELECT `name` FROM sys_area WHERE INSTR(CONCAT(',', (SELECT parent_ids FROM sys_area WHERE id=areaId), ','), CONCAT(',', id, ',')) AND id !=1
UNION ALL
SELECT `name` FROM sys_area WHERE id=areaId) a
优化过之后的SQL
SELECT CONCAT(c.name,',',b.name,',',a.`name`) FROM sys_area a,sys_area b,sys_area c WHERE a.id = areaId AND a.`parent_id`=b.`id` AND b.`parent_id`=c.`id`