如何检查mysql数据库中的每个第N个条目?

时间:2014-10-17 17:50:44

标签: mysql sql

我正在尝试在我们庞大的数据库中找到第一个条目,其中“foo”首次出现,但此查询太慢了:

select min(id)
from mytable
where data like '%foo%';

我很乐意数以百万计算得足够接近,但这个查询似乎没有更快地运行:

select min(id)
from mytable
where mod(id, 1000000) = 0
and data like '%foo%';

知道如何让mysql只检查每一百万条记录吗?我唯一能想到的是拥有一个带有第一个整数的临时表并加入它,将每个整数乘以1000000。

1 个答案:

答案 0 :(得分:0)

您的第二个查询很可能正在运行较慢的,因为MySQL必须为其找到的每个mod(id, 1000000) = 0添加id

为了让这个更快地移动,你应该在data列上有一个索引。

此外,使用LIMIT可能会对您有所帮助:

select min(id)
from mytable
where data like '%foo%'
order by id
limit 0,1000000

这将仅搜索前0到100000行。如果您找不到所需内容,请将限制 - 1000000, 2000000增加到仅查看1000000 - 2000000行。