ランダム抽出

親テーブルのデータに関連する子テーブルのデータから一件ランダム抽出して表示する場合

SELECT
  x,
  (SELECT y FROM test_b WHERE test_a.x = test_b.x ORDER BY RANDOM() LIMIT 1) AS y
FROM
  test_a;

でも出来るけど、親の件数分サブクエリが実行されてしまい、コストが予想外にでかくなるので

SELECT DISTINCT ON (x)
  x, y
FROM (
  SELECT
    x, y, RANDOM() AS r
  FROM
    test_a JOIN test_b USING (x)
  ORDER BY
    x, r
) AS a

の方が良さげ