好的,所以我有一个表(在我的 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
. 如果我想添加的价格已经存在于该日期的表中,那么我想用新价格更新那里的价格,否则我只想将其作为新记录插入。
考虑到没有 2 条记录应该共享相同的代码和日期,从 ( ticker
, )中创建唯一索引是否有意义?price_date
如果是这样,我将如何做到这一点以及如何使用这样的索引。