2010-12-11 17 views
10

Bu:Ortalama dize uzunluğunu mysql cinsinden nasıl alabilirim?

SELECT AVG(LENGTH(string)) 
    FROM BLAH 
LIMIT 10; 

... tüm sonuçlar arasında öğütmek gibi görünüyor. AVG'yi çıkarırsam daha hızlı olur.

Bir alt sorgu oluşturmak en iyisi de bu yavaş görünüyor. Hepsini strlen ile php döngüsüne yüklemek istemiyorum. Bellek verimli bir çözüm olduğunu umuyordum.

+0

Alt sorgu ne kadar yavaş? –

+0

Bize bir yazarın son X gönderilerini nasıl sınırlandırdığınızı gösterir misiniz, ve neden alt sorgulardan nefret ettiğinizi bize anlatabilir misiniz? – pilcrow

+0

Listede ilk 2 girişin ortalamasını almak istiyorum [1,2,3,4]. Bir alt sorgu, [1,2] alt kümesini alır ve daha sonra avg() öğesini kullanır. Bir akümülatöre daha sonra bölme eklemek, keyfi bir uzunluğun belleğe ayarlanmasını sağlamaktan daha iyidir. Başkalarının işaret ettiği gibi, bu sadece bir emirle bir emirdir, ama gerçekten bu kısım çok önemli değildir. – ForeverConfused

cevap

6

İlk sorgu tablodaki tüm satırlar arasında döngüler

ikinci sorgu AVG'nin satırlar 1

10 (10 şey sınırlamak doest sınırı her zaman yalnızca 1 satır döndürdü olacak beri) Ne ortalama bir çeşit mi arıyorsunuz?

+0

Bir yazar forumunda ortalama yayın uzunluğunu yaptıkları son X girişleri için alma. Alt sorguları kullanmaktan nefret ediyorum, böylece daha iyi bir yol olduğunu umuyordum. – ForeverConfused

+0

@ForeverConfused nop yok, en son 10 –

+0

için alt sorguda DESC tarafından bir sipariş kullanabilirsiniz Bu yüzden teknik olarak bir sayaç eklemek ve daha sonra vurduğu giriş sayısına bölebilirsiniz. Gösterdiğim alt sorgu, iki kez öğelerden geçer. – ForeverConfused

İlgili konular