在大型 MySQL 表的最后 N 行中搜索数字
在这种情况下,您有一个包含数百万行的长表,每行都有一个索引 (自动增量)和一个整数字段。您想要快速确定指定的数字是否出现在表格的最后 n 行中。
高效的解决方案
最有效的方法需要利用派生表,如下所示:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;
登录后复制
解释:
- 此查询建立一个派生表,从 big_table 中选择 id 和 val 列。
- 它根据 id 列按降序对派生表进行排序,确保最新的行首先出现。
- LIMIT $n 子句将结果集限制为最近的 n 行。
- 最后,WHERE 条件将派生表的 val 列与提供的进行匹配certain_number,标识包含最后 n 行中的数字的行。
好处:
-
索引搜索: 排序依据自动增量 id 列利用表索引,优化搜索。
-
性能:将结果集限制为最后 n 行,无需扫描整个表,从而显着提高性能。
-
灵活性: 该查询允许您修改 $n 参数以在最后一行的不同范围内进行搜索。
以上是如何高效地搜索大型 MySQL 表的最后 N 行中的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!