目前我正在使用:
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 为空时,最快的随机查询解决方案是什么?
ID 是 PK,X 列是 int(4)。表包含大约一百万条记录和超过 1 GB 的总大小,目前每 24 小时翻一番。
column_x 已编入索引。
列 ID 可能不连续。
在这种情况下使用的数据库引擎是 InnoDB。
谢谢你。