Najszybszy losowy wybór WHERE kolumna X to Y (NULL)
Obecnie używam:
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
Zwykle jest to bardzo szybkie, jednak gdy dołączę podświetlony column_x będący Y (null), staje się to powolne.
Jakie byłoby najszybsze rozwiązanie losowego zapytania, w którym kolumna X rekordów ma wartość NULL?
ID to PK, kolumna X to int (4). Tabela zawiera około miliona rekordów i ponad 1 GB całkowitej wielkości podwajając się co 24 godziny.
column_x jest indeksowany.
Identyfikator kolumny może nie być kolejny.
Zastosowanym w tym przypadku silnikiem DB jest InnoDB.
Dziękuję Ci.