2008-09-10 10 views
4

Olası Çoğalt:
SQL Query to get latest priceSQL, bir MySQL veritabanından en yeni girdileri nasıl etkin bir şekilde seçer?

Ben hisse senedi fiyatı geçmişini içeren bir veritabanı var. Listelenen her hisse senedi için en son fiyatları seçmek istiyorum. PostreSQL'in burada ideal olarak uygun bir DISTINCT ON bildirimi olduğunu biliyorum. Tablo sütunları, name, closingPrice ve date;. name ve date birlikte benzersiz bir dizin oluşturur.

en kolay (ve çok uneffective) yolu buldum

SELECT * FROM stockPrices s 
WHERE s.date = 
(SELECT MAX(date) FROM stockPrices si WHERE si.name = s.name); 

Çok daha iyi bir yaklaşım

SELECT * 
FROM stockPrices s JOIN (
    SELECT name, MAX(date) AS date 
    FROM stockPrices si 
    GROUP BY name 
) lastEntry ON s.name = lastEntry.name AND s.date = lastEntry.date; 

olduğunu Ne Bunu yapmanın etkili bir yol olacaktır? Hangi indeksleri oluşturmalıyım? arasında

yinelenen:
SQL Query to get latest price

cevap

0

Ben senin İkinci yaklaşım çok verimli olduğunu düşünüyorum bakın. Onun sorunu nedir?

Ad ve tarihe dizin eklemek zorundasınız.

+0

Eh, performans gerektiriyorsa bir dizin eklemeniz gerekir. On hisse senedi ve bir yıllık günlük veri ise, endişelenmem: MySQL tablo taramada nispeten iyidir. –

+0

Çok az veriye sahip olsaydı, bunu yapmak için etkili bir yol istemezdi, değil mi? İlk, açık yaklaşım bile yeterli olacaktır. –

İlgili konular