我正在尝试在我们庞大的数据库中找到第一个条目,其中“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。
答案 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行。