http://www.perlmonks.org?node_id=723806


in reply to Re^4: find difference in dates/items in same column
in thread find difference in dates/items in same column

Ok - I'm interested now. I'm going to assume that the following is the table definition:
CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`brand` VARCHAR(255) NOT NULL ,`date` DATE NOT NULL ,INDEX (`brand`,`date`) ,INDEX (`date`,`brand`) );
Given that, you can do something assuming that the number of reads is at least 20x the number of writes (otherwise it's really not that performant). Basically, the idea is to maintain the `rank` column on each INSERT, UPDATE, or DELETE. Your writes get slow, but your reads get fast. This, essentially, is a cache. You can do this maintenance either in code or using a trigger. MySQL has triggers, so that works out nicely.

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?