我所拥有的是一个表 statistieken,其中包含一个 ip、浏览器信息的哈希、访问的 url 和时间戳中的最后访问日期。
我可以从不同来源编译的内容导致了这个查询,唯一的问题是这个查询需要永远(9 分钟)才能在一个大约 15000 行的表上完成,所以这个查询效率很低。
我想我会以错误的方式解决这个问题,但我找不到像样的帖子或教程如何使用选择的结果作为获得我想要的结果的基础。
我只需要概述表中与在过去 12 小时内访问超过 25 页的返回结果的哈希相匹配的每个条目。
CREATE TABLE IF NOT EXISTS `statsitieken` (
`hash` varchar(35) NOT NULL,
`ip` varchar(24) NOT NULL,
`visits` int(11) NOT NULL,
`lastvisit` int(11) NOT NULL,
`browserinfo` text NOT NULL,
`urls` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
这是我到目前为止尝试编译的查询。
SELECT * FROM `database`.`statsitieken` WHERE hash in (SELECT hash FROM `database`.`statsitieken`
where `lastvisit` > unix_timestamp(DATE_SUB(
NOW(),INTERVAL 12 hour
)
)
group by hash
having count(urls) > 25
order by urls)
我需要这个在适当的时间内编译,比如 < 1 秒,在我看来这应该是可能的......