我有一个带有索引(自动递增)和整数值的表。该表长百万行。
如何搜索某个数字是否最有效地出现在表的最后n行中?
从@chaos给出的答案开始,但进行了一些修改:
ORDER BY如果使用,则应始终使用LIMIT。对于RDBMS表,没有保证的隐式顺序。 通常, 您可能 会 按主键的顺序获得行,但是您不能依靠它,也不是可移植的。
ORDER BY
LIMIT
如果按降序排列,则无需事先知道表中的行数。
您必须为派生表指定一个 相关名称 (又名表别名)。
这是我的查询版本:
SELECT `id` FROM ( SELECT `id`, `val` FROM `big_table` ORDER BY `id` DESC LIMIT $n ) AS t WHERE t.`val` = $certain_number;