現在私は使用しています:
SELECT *
FROM
table AS t1
JOIN (
SELECT (RAND() * (SELECT MAX(id) FROM table where column_x is null)) AS id
) AS t2
WHERE
t1.id >= t2.id
and column_x is null
ORDER BY t1.id ASC
LIMIT 1
これは通常非常に高速ですが、強調表示された column_x が Y (null) の条件を含めると、遅くなります。
レコードの列 X が null の場合、最も高速なランダム クエリ ソリューションは何でしょうか?
ID は PK、列 X は int(4) です。テーブルには約 100 万件のレコードが含まれており、合計サイズが 1 GB を超えており、現在 24 時間ごとに 2 倍になっています。
column_x は索引付けされています。
列 ID が連続していない可能性があります。
この場合に使用される DB エンジンは InnoDB です。
ありがとうございました。