Büyük Karşılaştırması - MySQL ve PHP

2 Cevap php

Ben bir kullanıcılarını analiz alır ve bir db bir skor ile kendi bilgilerini kaydeden bir kullanıcı derecelendirme sistemi geliştirdik.

Ben yapmıştır saklanan 1 Milyon kullanıcılara yakın alıyorum.

Ben (<50 puan) tablodan kullanıcıların belirli bir dizi alarak ve daha sonra her şey yıkılırken olmadan kimlikleri başka bir dizi karşı kimlikleri karşılaştırarak ile ilgili sorunlar yaşıyorum.

(Skor <50) sorgu sonucu civarında 65k satır ve her şey * 1.000 65K çalışan çok karşılaştırma muhtemelen 1.000 kullanıcı kimlikleri aykırıdır.

Db benim darboğaz mı? Ya da kimliklerini karşılaştırma altındadır? Bu bölmek için daha iyi bir yolu var mı?

Sorgu -> "userscore <50 kullanıcılarının seçin adınızı, userscore"

o zaman

Foreach değerleri karşılaştırır

2 Cevap

Eğer herhangi bir tablo ya da dizin bilgi vermemesi beri, burada önermek için gidiyorum budur.

  • userscore üzerinde bir dizin var emin olun. Eğer tabloda bir milyondan fazla satır var ve "NEREDE userscore> 50" ile bir sorgu yapıyorsanız, bu sütun bir dizin gerekiyor.
  • Sorgu bu dizini kullanarak emin olun. Yani, ön EXPLAIN ile elle sorgusu çalıştırın. EXPLAIN SELECT username, userscore from users where userscore < 50. Optimize the results.
  • Eğer id karşılaştırma yaptığınızı nasıl söz değil, bu yüzden dizideki karşı her birini kontrol eden bir döngü içinde kabul edeceğiz. Sen sorguya tüm 1000 kimlikleri koyarak ve skor ile kullanıcılara SELECT sorgusu sınırlayıcı daha iyi olabilir < 50 VE bu seti kendi kimliği ile.

Eğer tablolar, indeksler, ve karşılaştırmalar hakkında daha fazla bilgi gönderirseniz, ben muhtemelen daha belirgin olabilir.

bu db olup olmadığını cevaplamak için yeterli kolay görünüyor. Hemen önce sorgunuzla, / tmp bir log dosyasının bir Fopen yapın. Sonra dosyaya bir Microtime'da () sonuçlarını fwrite. Sadece sorgudan sonra, başka Microtime'da () sonuçlarını fwrite. Bir kez komut dosyasını çalıştırın. Eğer aşağıdaki görmek mümkün olacaktır:

1) bile önceden sorgu noktaya alıyorsanız

2) komut sorgu ortasında başarısız mı

Bu senaryoyu çökmez ise 3) ne kadar sorgu sürer