0

我正在使用第三方 mysql 表(即我无法更改其任何属性),并且我有一行具有 id(键)、名称和值。

我想将唯一的缓存键存储到名为 cacheKeys.. 的行中,这是我的 sql 语句

$query = "INSERT INTO ".$tableName." (name, value) VALUES ('CacheKeys', '".$key."') ON
DUPLICATE KEY UPDATE value = CONCAT_WS (',', $tableName.value, '$key')";

我已经实现了我的缓存算法,所以每次有人添加缓存键时,我都会检查它是否已经存在(从上面的 CacheKeys 行),如果存在,我会从缓存中获取它。否则我存储它。

问题是sql写入操作似乎需要时间,并且它经常存储重复的cacheKeys ie:currency,defaultCurrencyId,user19,currency1,currency1,currency1,currency1,currency1

所以我需要检查一下,我没有在 cacheKeys 字段中添加重复的键。我需要使用 SQL 来做到这一点(使用 php,即正则表达式等会非常昂贵)。

4

1 回答 1

0

尝试这个::

 INSERT INTO tb (firstname, lastname) VALUES ('Jack', 'Doe') IF NOT  
 EXISTS ( SELECT * FROM tb WHERE firstname='Jack' AND lastname='Doe' );
于 2012-06-26T08:32:11.430 回答