SORU
22 EYLÜL 2011, PERŞEMBE


Uygulamanızda sql vs hesaplamaları gerçekleştirmek için artıları ve eksileri nelerdir

3* *tablo aşağıdaki alanlar vardır:

id (bigint),amount (numeric(19,2)),createddate (timestamp)

Hadi, yukarıda tablo var diyelim. Dün kayıtlara ulaşmak istiyorum miktarı kuruş baskılı alarak bir rapor oluşturur.

Yapmanın bir yolu java uygulamam hesaplamalar ve basit bir sorgu yürütmek için

Date previousDate ;// $1 calculate in application

Date todayDate;// $2 calculate in application

select amount where createddate between $1 and $2 

ve kayıtlar arasında döngü ve benim java sent miktarda dönüştürmek uygulama ve rapor oluşturun

Başka bir yolu sql hesaplamalar kendisi sorgu gibi:

select cast(amount * 100 as int) as "Cents"
from shopkeeper  where createddate  between date_trunc('day', now()) - interval '1 day'  and  date_trunc('day', now())

ve kayıtlar arasında döngü ve rapor oluşturun

Bir şekilde , tüm işleme java uygulaması yapılır ve basit bir sorgu kovuldu. Diğer durumda tüm dönüşümleri ve Hesaplamalar Sql sorgu yapılır.

Yukarıda kullanma durumu sadece bir örnek, bir tablo, benzer tarzda işlem gerektiren pek çok sütun bulunabilir gerçek bir senaryo.

Performans ve diğer yönlerden daha iyi ve bu yüzden bana söyleyebilir misiniz?

CEVAP
22 EYLÜL 2011, PERŞEMBE


Faktör - ama en önemlisi: çok bağlıdır

  • hesaplama karmaşıklığı (bu terazi bu yana uygulama-sunucu, karmaşık çatırdayan yapmayı tercih ederimdışarı; bunun yerine db bir server daha, hangi ölçekler)
  • veri veri, db server ne çok eğer bu toplamaları dizinler içinde yapılabilir eğer bant genişliği kaydetmek ve disk ıo/toplam erişim gerekiyorsa () hacmi
  • kolaylık (sql tabanlı iş; kötü hata işleme için karmaşık iş - özellikle usul iş için pek iyi değil ama çok iyi için en iyi dil değil gerçi)

Her zaman olduğu gibi, Eğeryapınveri uygulama-sunucu geri, sütunlar ve satırlar en aza getirmek sizin yararınıza olacaktır. Sorgu ayarlı ve uygun bir şekilde dizine emin olmak ya da senaryo yardımcı olacaktır.

Tekrar not:

ve sonra kayıtları döngü

Döngükayıtlarda hemen hemen her zaman sql yanlış bir hamle - tabanlı bir yazma işlemi tercih edilir.

Genel bir kural olarakBen tercih etmeye devam veritabanı bu iş için en az "mağaza bu veri, bu veri getirme" - ancak, her zaman vardır örnek senaryolar nerede zarif bir sorgu sunucu kurtarabilir çok fazla bant genişliği.

Eğer bu çok fazla hesaplama gerektiriyorsa, bir yerde önbelleğe alınabilir? da göz önünde bulundurun:

Eğer isterseniz birdoğruem "hangisi daha iyi"; ikisi kod ve karşılaştır (ilk taslak olasılığı 0 olarak ayarlanmış olduğunu belirterek). Ama faktör, normal kullanım için: eğer gerçekliğin olmak diye 5 kere (ayrı) bir kez, sonra taklit: kiyaslama sadece bir tek "1 vs 1 Bu olanlar".

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jcortes187

    jcortes187

    24 Mart 2006
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010