Your interests are generally not well-served by learning somewhat vague "rules" like "
OR should be avoided" or "
group_concat is slow."
Neither is actually correct, they only have elements of truth underlying them.
Use the correct capability to accomplish your purpose, while understanding that sometimes your interests are served by modifying your purpose to accommodate inherent limitations.
GROUP BY (not simply
GROUP_CONCAT) can cause a performance hit if the optimizer has no effective way to accommodate the grouping... but this has nothing to do with whether
GROUP BY should be used. If you need it, then of course you should use it... but manipulating strings is a cake-walk compared to scanning disks and sorting without an index, and the CPU cycles consumed by the concatenation are near the noise floor.
The take-away here is to understand how the optimizer sees your query, and how it plans to resolve it. Using
EXPLAIN SELECT ... to verify that the server has made sensible choices (and that you have written a sensible query) should be second-nature to you if you want good performance.
Interpreting the output can seem like a bit of a dark art, but you'll find it's worth the effort.