Tabloda mySql satır kontrol noktasına tasarruf?

2 Cevap php

Ben bir çiş sorunu yaşıyorum ve ben bir çözüm elde etmek için daha uygun / daha basit bir yolu vardır eminim, ama tüm aramalar şu anda bir boşluk yukarı atmak vardır!

Ben düzenli [bir cron işi aracılığıyla] php sayfası tarafından güncellenen bu uygun girişleri ekler veya siler bir mysql db var.

Benim sorun ben de giriş için [telefon numarası veya benzeri yani] herhangi detayları değişip değişmediğini kontrol etmek gerekir, ama her çağrısı yapıyor [sadece overkill bana görünüyor does mümkün değil, ama ben olduğunu bir 3. parti API çağrısı sınırı ile sınırlı] Artı bu kritik bilgi değildir.

Yani bu sadece sayfa arama başına bir giriş kontrol, ve birbirini izleyen sayfa çağrısı ile satır / entires yineleme yapmak için en iyi olabileceğini düşünüyordum.

Ne Bunu yapmanın en iyi yolu, yani parçayı bir sonraki kontrol edilmelidir ki tabloda giriş / satır arasında tutmak olurdu?

Bu nasıl uygulanacağı 2 fikirleri var:

1) Geçerli satırın kimliği sunucu üzerinde bir dosyaya kaydetmek olabilir [kesinlikle değil en iyi yolu]

2) an extra boolean field [check] is add to the table, set to True on the first entry and false to all other. Then on each page call it; finds 'where check = TRUE' runs the update check on this row, 'set check = FALSE' 'set [the next row] check = TRUE'

Si bu yapmak için en iyi yolu, ya da herkes daha iyi sugestion var mı?

şimdiden teşekkürler!

. K

Başlık hakkında PS üzgünüm

2 Cevap

Bu iyi bir çözümdür, ama ben gece büyük güncellemeler yapmak zorunda kalırsanız, yapmam, sonra tabloları birleştirmek ve farklı nerede söyle bir SQL select yapın, sonra yeni bir boş tablo güncellemeleri yazacağım eğer emin değil gibi başka bir SQL UPDATE

UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;

Bir satır UPDATE CURRENT_TIMESTAMP [http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] ON veya açıkça güncelleştirme SQL kullanılarak örtülü güncellenir damgası saklayabilirsiniz. Sonra yapmanız gereken tüm (ORDER BY ve LIMIT kullanarak) en düşük damgası ile satır (lar) ı seçin ve işlemek için sonraki satır olması. Bu yüzden uzun süre damgası her zaman güncel olduğundan emin olun gibi.

e.g. Say you used the field last_polled_on TIMESTAMP to store the time you polled a row. Your insert looks like:

INSERT INTO table (..., last_polled_on) VALUES (..., NOW());

: Sizin güncelleme gibi görünüyor

UPDATE table SET ..., last_polled_on = NOW() WHERE ...;

Ve senin anket için bir sonraki satır için seçme gibi görünüyor:

SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;