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.

questionAnswers(4)

yourAnswerToTheQuestion