Try with CTE, so sort should be cheaper eg:
WITH mydata AS (SELECT a.*,b.date AS bdate FROM a left join b on a.c_id_msg = b.c_id_msg WHERE a.c_tar ilike any ('{"AB142%"}') ) SELECT mydata.* ORDER BY mydata.bdate;