id |label |price|employee_id|customer_id|
---|------------|-----|-----------|-----------|
...
344|Poke | 4.18| 3772| 13204|
344|Poke | 4.18| 3313| 13204|
344|Poke | 4.18| 2320| 13204|
344|Poke | 4.18| 632| 13204|
344|Poke | 4.18| 4264| 13204|
344|Poke | 4.18| 699| 13204|
344|Poke | 4.18| 1070| 13204|
344|Poke | 4.18| 3022| 13204|
344|Poke | 4.18| 1501| 13204|
344|Poke | 4.18| 808| 13204|
344|Poke | 4.18| 2793| 13204|
344|Poke | 4.18| 1660| 13204|
344|Poke | 4.18| 932| 13204|
...
To be clear, there are ways to write this query without UNION that have both good performance and give the correct results, but they're very fiddly and harder to reason about that just writing the two comparatively simple queries and then mashing the results together.
This isn't true if you have certain use cases in your application, pagination being one of them. There's no simple way to implement pagination when you have two or more queries that return and unknown number of results and you're tasked with maintaining a consistent order across page changes.
If you make a single query do all the work, it's easy to implement paging in any number of ways, the most performant being to filter by the last id the client saw. If your users aren't likely to paginate too far into the data, LIMIT and OFFSET will work fine as well.