Nasıl daha sonra tablodan şeyler silme planlıyorsunuz? Bunu verimli çalışması için başka bir dizin eklemek gerekebilir.
Sadece son 5 Ziyaret istiyorsanız, ben masa denormalize istiyorum (boşluk, endeks kaydeder ve sadece tek bir birincil anahtar arama kullanır) ve süreç içinde, ben artık eski verileri silme konusunda endişelenmenize gerek olacaktır. O zamanla çok büyümek olmayacak böylece Her kullanıcı sadece tablodaki bir satır işgal edecektir. Yani:
CREATE TABLE user_visitors (user_id int primary key,
visitor_1_id int,
visitor_1_time timestamp,
..
visitor_5_id int,
visitor_5_time timestamp);
Bir ziyaret saklamak için, ziyaretçi olarak visitor_1 ile yeni bir satır eklemek istiyorum ya. Çiftleri üzerinde, önceden depolanan değerleri aşağı kayacaktır:
INSERT INTO user_visitors SET ...
... ON DUPLICATE KEY UPDATE visitor_5_id = visitor_4_id, visitor_5_time = visitor_4_time ...
... visitor_1_id = ?, visitor_1_time = ?
Eğer çiftleri hakkında endişe varsa visitor_id zaten satırda varsa satır güncellendi almazsınız şekilde UPDATE bölümünde IFS, ekleyerek bunu atlatmanın mümkün olabilir. Kodunda güncellenen satır sayısı için kontrol edebilirsiniz. Sıfır ise, oradan yinelenen ziyaretçi zamanlı güncelleme anlaştım. Bazı çalışma gerektirir ama hızlı ve anlaşılması kolay olacak.