2010-12-11 12 views
10

この:mysqlで平均文字列長を取得するにはどうすればよいですか?

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

...は、すべての結果を通じて挽くようです。私がAVGを離陸すれば、それはより速いです。

SELECT AVG(len) 
    FROM (SELECT LENGTH(string) as len 
      FROM BLAH 
     LIMIT 10) as herp 

のようにサブクエリを作成するのが最善でしょうか。私はstrlenを介してPHPループにすべてをロードしたくありません。私はメモリ効率的なソリューションがあることを望んでいた。

+0

サブクエリはどれくらい遅いですか? –

+0

実際に投稿者の最後のX投稿に実際にどのように限定して表示することができますか?サブクエリが嫌な理由を教えてください。 – pilcrow

+0

リスト[1,2,3,4]の最初の2つのエントリの平均をとってみたい。サブクエリはサブセット[1,2]をとり、その上でavg()を使います。任意の長さのセットをメモリにロードするよりも、アキュムレータに加算して除算する方が良いでしょう。他の人が指摘しているように、それはid descによる単なる注文ですが、実際にはそれほど重要ではありません。 – ForeverConfused

答えて

6

最初のクエリは、テーブル内のすべての行をループ(常に1つだけの行が返さが存在することになるので、限度10は、何も制限doest)

第2の照会平均の行1 10

ものに平均的なものをお探しですか?

+0

彼らが作った最後のXエントリの作者フォーラムでの平均投稿長さの取得。サブクエリを使用するのは嫌なので、より良い方法があると思っていました。 – ForeverConfused

+0

@ForeverConfused nopはありません。最後の10のサブクエリでDESCによる注文を使用することができます。 –

+0

これは平均的なので、技術的にはカウンタに追加してヒットしたエントリ数で割ることができます。私がそれを示すサブクエリの方法は、項目を2回通過します。 – ForeverConfused

関連する問題