Я бы сделал это в двух запросах.Проблема не в эффективности или размере соответствующих таблиц, а в том, что вы создаете декартово произведение между shop_rigs_images и shop_rigs_parts.
Это означает, что если в данной строке shop_rigs есть три изображения и четыре части, вы получите 3х4 = 12 строк для этого одиночного shop_rig.
Итак, вот как я бы это написал:
SELECT ...
FROM shop_rigs
INNER JOIN shop_rigs_images
ON shop_rigs.shoprigs_ref = shop_rigs_images.shoprigsimg_ref
WHERE shoprigs_enabled='1' AND shoprigs_ref='$rig_select'
ORDER BY shoprigs_order ASC
SELECT ...
FROM shop_rigs
INNER JOIN shop_rigs_parts
ON shop_rigs.shoprigs_ref = shop_rigs_parts.shoprigsparts_ref
WHERE shoprigs_enabled='1' AND shoprigs_ref='$rig_select'
ORDER BY shoprigs_order ASC
Я исключил список выбора столбцов, потому что я согласен с @Doug Kress, что вы должны выбирать только те столбцы, которые вам нужны в данном запросе, а не все столбцы с *
.