use test; drop table if exists site; Warnings: Note 1051 Unknown table 'site' drop table if exists screenshot; Warnings: Note 1051 Unknown table 'screenshot' CREATE TABLE `site` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `owner_title` (`title`) ) ENGINE=TokuDB AUTO_INCREMENT=575 DEFAULT CHARSET=utf8; CREATE TABLE `screenshot` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `site` int(11) unsigned NOT NULL, `timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=TokuDB AUTO_INCREMENT=82720 DEFAULT CHARSET=utf8; INSERT INTO `site` (`id`, `title`) VALUES (9, 'Facebook'), (6, 'Google'); INSERT INTO `screenshot` (`id`, `site`, `timestamp`) VALUES (74675, 6, '2013-04-28 12:37:03'), (82712, 6, '2013-04-30 12:47:04'), (299, 9, '2012-09-09 13:15:28'), (63038, 9, '2013-04-26 12:07:06'), (82213, 9, '2013-04-29 20:00:11'), (3911, 33, '2012-11-12 00:00:42'); SELECT * FROM site LEFT JOIN screenshot ON site.id = screenshot.site AND timestamp > '2013-04-28 13:30:00' WHERE screenshot.id IS NULL; id title id site timestamp SELECT * FROM site where site.id not in (select screenshot.site from screenshot where timestamp > '2013-04-28 13:30:00'); id title create index `site` on screenshot(`site`); SELECT * FROM site LEFT JOIN screenshot ON site.id = screenshot.site AND timestamp > '2013-04-28 13:30:00' WHERE screenshot.id IS NULL; id title id site timestamp drop table site; drop table screenshot;