If your table never has data in it for more than 15 minutes, you can use a smaller data type than DATETIME to store timestamps. Depending on the granularity you care about, you can use a very small data type ... With SMALLINT you can store "minutes from midnight." If you want to lose even more detail, you can use TINYINT for 15 minutes of detail. Of course, this requires a bit more complex logic to handle cases “right after midnight” ...
DELETE FROM tracker WHERE ( EXTRACT(DAY_MINUTE FROM NOW()) > 15 AND post_time < EXTRACT(DAY_MINUTE FROM NOW()) ) OR ( post_time < EXTRACT(DAY_MINUTE FROM NOW()) < 15 AND post_time < EXTRACT(DAY_MINUTE FROM NOW()+60) )
The advantage is that the data you need to read and compare is much smaller, so you can process it faster. This will be more important if you store your data on disk, where disk I / O is proportionally much more important than the bandwidth of your memory.
In addition, for a table with only rows of 10-15 thousand and the corresponding index, I doubt that this will create a noticeable difference - whether on disk or in memory.
Flimzy
source share