SELECT `p`.`product_id`, `pi`.`images`, ...
FROM (
SELECT `product_id`,
GROUP_CONCAT(`image` ORDER BY `sort_order`) AS `images`
FROM `oc_product_image`
GROUP BY `product_id`
) AS `pi`
JOIN `oc_product` AS `p`
ON `p`.`product_id` = `pi`.`product_id`
AND `p`.`status` = 1
<?php
$alphabet62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function toAlphabet(int $decimal, string $alphabet) : string
{
$base = mb_strlen($alphabet);
$result = '';
do {
$pos = $decimal % $base;
$result = mb_substr($alphabet, $pos, 1) . $result;
$decimal = intdiv($decimal, $base);
} while ($decimal > 0);
return $result;
}
var_dump(toAlphabet(12345678, $alphabet62));
// string(4) "PNFQ"
var_dump(toAlphabet(12345678, '0aA'));
// string(15) "AaA0A00A000Aa00"
проверяем все сообщения в этой таблице и ищем те, которые адресованы лично ему, затем полученный список проверяем, прочитано или нет, все сообщения помеченные как непрочитанные пихаем в блок Новые сообщения на сайтеСудя по вопросу, вы не понимаете, как работает база данных. Научитесь правильно работать с БД и ваш вопрос о ресурсозатратности сам отпадёт.