目前我使用:是最快的隨機選擇WHERE列X是Y(NULL)
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(空)的條件,它就會慢。
什麼是最快的隨機查詢解決方案,其中記錄的列X爲空?
ID是PK,列X是int(4)。表格包含大約一百萬條記錄,總大小超過1 GB,目前每24小時增加一倍。
column_x被索引。
列ID可能不連續。
本例中使用的數據庫引擎是InnoDB。
謝謝。
是column_x索引? – ChrisWue
是的,它被編入索引,但隨着數據庫的增長,查詢開始花費太長時間,並且很多column_x變爲NOT NULL。 – Phil
該表使用MyISAM或InnoDB引擎嗎?你可以嘗試在'(column_x,id)'上添加一個複合索引嗎? –