is it please possible to rewrite the SQL query
SELECT DISTINCT ON (uid)
uid,
female,
given,
photo,
place
FROM words_social
WHERE uid IN (SELECT player1 FROM games)
OR uid IN (SELECT player2 FROM games)
ORDER BY uid, stamp DESC
where first column player1 is fetched in a subquery and then column player2 is fetched from the same table?
You could use
WHERE EXISTS (SELECT FROM games WHERE player1=uid OR player2=uid)
although as Tom says, it's dubious whether that will result in a significant speedup.
Geoff