Yes, you are right. We can overcome this issue by updating the query as
{exp:query sql="SELECT GROUP_CONCAT(CONVERT(entry_id, CHAR(7)) SEPARATOR ‘|’) AS entry_ids FROM exp_channel_data WHERE (field_id_[id of field1]='keyword' OR field_id_[id of field2]='keyword') AND channel_id='[CHANNEL ID]' GROUP BY entry_id LIMIT 1"}
{exp:channel:entries entry_id="{entry_ids}"}
{title}
{/exp:channel:entries}
{/exp:query}
In above query {entry_ids} will return entry ids separated with “|” like 1|2|3 so your channel entry tag will be called once.
I didn’t test above but hope it would work very well.
Best Regards,