Добре, така че имам таблица (в моята база данни MySQL), както следва:
CREATE TABLE IF NOT EXISTS `funddata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticker` varchar(128) NOT NULL,
`price_date` date NOT NULL,
`price` double NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
И някои примерни данни:
INSERT INTO funddata (ticker, price_date, price) VALUES ("tick1", '2013-06-01', 36.2);
INSERT INTO funddata (ticker, price_date, price) VALUES ("tick2", '2013-06-01', 14.7);
INSERT INTO funddata (ticker, price_date, price) VALUES ("tick3", '2013-06-01', 102.5);
INSERT INTO funddata (ticker, price_date, price) VALUES ("tick1", '2013-07-01', 38.7);
INSERT INTO funddata (ticker, price_date, price) VALUES ("tick2", '2013-07-01', 16.2);
Сега да кажем, че искам да добавя още цени за tick1
. Ако цената, която искам да добавя, вече съществува в моята таблица за тази дата, тогава искам да актуализирам какво има там с новата цена, в противен случай просто искам да я вмъкна като нов запис.
Има ли смисъл да се прави уникален индекс от (ticker
, price_date
), като се има предвид, че няма 2 записа, които трябва да споделят един и същ тикер и дата? Ако е така, как бих направил това и как бих използвал такъв индекс.