我试图发现在我们庞大的数据库中的第一项,其中“富”刚开始出现,但此查询速度太慢:如何检查mysql数据库中的每个第N项?
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
_“任何想法如何让mysql只检查每第100万条目?” - 这个问题意味着你甚至在这之前做错了事情。您应该(在正常情况下)在您告诉数据库_where_(或如何)搜索自己时不需要这种方法。很可能这个问题可以通过使用适当的索引来解决。 (尽管一个带有'like'%foo%'的通配符搜索当然是有问题的,并且该列的索引很可能不会解决这个问题,但是也不会试图干涉搜索是如何完成的。) – CBroe 2014-10-17 17:54:15
数据太大而无法索引,特别是对于我的一个查询。 – 2014-10-17 18:03:37
是否可以计算每个第n行的id并专门检索该行,然后测试其中的数据?它会很快,因为它会做索引查找。 – 2014-10-17 19:17:43