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 フィールドに追加していないことを確認する必要があります.. 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 に答える