"tags"라는 테이블이 있습니다.이 테이블에는 ID, 값, 값이 고유 키인 3 개의 열이 있습니다.쿼리 성능 - MySQL
우리 회원들은 좋아하는 음악을위한 태그를 입력해야합니다. 우리는 "members.favorites"테이블에 각 회원 태그를 저장하고, "tags"테이블을 자동 제안합니다.
회원 즐겨 찾기 : "song1, song2, song3", 우리는 그 값을 "members.favorites"에 정확하게 입력합니다. 이제 "tags"를 넣을 때 ',' 이를 "태그"에 삽입하면 "태그"는 "노래 1", "노래 2", "노래 3", "집계 = 1"의 3 행을 얻습니다. 이제 다른 회원이 와서 "노래 3, 노래 4, 노래 5" 이것은 "tags", "song4"및 "song5"로는 존재하지 않기 때문에 새로운 행으로 삽입되지만 "song3"은 이미 존재하므로 "song3"에 대해 "count +1"을 수행해야합니다.
$tags_array = explode(',', $tags);
foreach($tags_array as $key => $val){
$check_if_already_exists = mysql_query("SELECT value FROM tags WHERE value = '$val'");
if(mysql_num_rows($check_if_already_exists)){
// This already exists, so count++
mysql_query("UPDATE tags SET count = count+1 WHERE value = '$val'");
}else{
// It's a new tag, insert
mysql_query("INSERT INTO tags (value, count) VALUES ('$val', '1')");
}
}
그러나 이것은 어떻게 든 유선 보인다 :
내 코드입니다! 각 사용자는 20 개의 좋아하는 노래를 가지고있을 수 있으며 위의 코드는 최상의 성능을 내지 못하는 것 같습니다. 누구나 개선 할 아이디어가 있습니까? 당신은 INSERT ... ON DUPLICATE KEY UPDATE 구문