0

这是我当前的表格;

CREATE TABLE `linkler` (
  `link` varchar(256) NOT NULL,
  UNIQUE KEY `link` (`link`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我只会在表上使用这两个查询,SELECT EXISTS (SELECT 1 FROM linkler WHERE link = ?)并且INSERT INTO linkler (link) VALUES (?)

我对索引数据库了解不多。因为我不会两次添加相同的东西,所以我认为将其标记为唯一是个好主意。我能做些什么来提高性能吗?例如,我可以做一些总是对行进行排序的事情,以便 mysql 可以进行二进制搜索或类似的事情吗?

4

1 回答 1

1

添加唯一索引是完美的。此外,由于您有一个唯一索引,因此在插入之前不需要检查是否存在。如果行不存在,您可以简单地使用INSERT IGNORE它来插入行(如果存在则忽略错误):

INSERT IGNORE INTO linkler (link) VALUES (?)

这是否比执行 SELECT/INSERT 组合更快取决于您期望重复的频率。

ETA:如果这是此表中的唯一列,您可能希望将其设为 aPRIMARY KEY而不仅仅是 a,UNIQUE KEY尽管我认为除了为了清楚起见之外,它真的很重要。

于 2013-01-02T15:42:43.630 回答