Günlük mysql değerlerini ekleyen (veya güncelleştiren) bir uygulama oluşturuyorum. başlıklarıyla basitleştirilmiş kayıt kümesi ise:mysql benzersiz dizin sütun kümesinden
ItemName,ItemNumber,ItemQty,Date
test1,1,5,2016/01/01
test1,1,3,2016/01/02
test2,2,7,2016/01/01
test2,2,5,2016/01/02
16 sütun ve 216,000 kayıtları ile yukarıdaki kayıt için basit bir ekleme deyimini kullanarak yaklaşık 4 dakika (php/mysql) alır - Bu kapsar değerlerin bir hafta. Tabii ki aynı kayıt kümesini ithal edersem, kopyalarım olurum. Yinelenen girişleri etkin bir şekilde engellemenin bir yolunu bulmaya çalışıyorum. Amaç: Her gün aldığım senaryoda, geçerli haftanın tarihleri olan bir kayıt kümesi, yalnızca yeni tarihlerin eklenmesiyle sonuçlanır.
Ardıl içe aktarmalarda değişebilecek tek şey, ItemQty'dir. PHP'de ItemName, ItemNumber, Date için db'yi eklemeye çalıştığım değerlerle sorguladığım bir mantık yaptım. SELECT ifadesinde bir sonuç varsa, ben kırırım. Yoksa, yeni bir satır eklemeye devam ediyorum. Sorun şu ki, bu mantığın eklenmesiyle artık 4 dakika değil, birkaç saat sürüyor. (Çalışıyor)
Herhangi bir fikrin var mı?
Belki de eklerken, sağlama toplamı gibi bir şey eklemek için md5 (ItemName, ItemNumber, ItemQty, Date) eklemek ve sonra bu sağlama toplamı yerine SELECT * kontrol edin $ tablo WHERE ItemName = value, ItemNumber = değer, ItemQty = değer, şu anda sahip olduğum Date = date.
Sorunum, eklediğim kayıtların temel olarak benzersiz hiçbir şeye sahip olmamasıdır. Teklik, bir grup alandan, yalnızca içe aktarılacak veri kümesine kıyasla gelir. Bir şekilde benzersizliği yakalarsam, diğer sorunumu da çözerim ki bu da bir satır siliyor ya da ItemQty değiştiğinde bir satırı güncelliyor.
DUPLICATE TUŞUNU kullanabilmek için tabloda benzersiz bir anahtara ihtiyacı vardır. – Barmar
Evet, ItemName ... – Nadir
Bence benzersiz anahtar '(itemName, itemNumber, date)' – Barmar