質問

などのサイトで使用されている人気アルゴリズムを調べてきました。 レディット, ディグ そしてさらに スタックオーバーフロー.

レディットのアルゴリズム:

t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes

y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 0, otherwise x}

log(z) + (y * t)/45000

私は常に SQL 内で単純な順序付けを実行していましたが、そのような順序付けをどのように処理すべきか疑問に思っています。

テーブルの定義に使用する必要がありますか、それとも式内の順序を指定して SQL を構築できますか (パフォーマンスを妨げることなく)?

また、パフォーマンスの問題を引き起こすことなく、さまざまな場面で複数の順序付けアルゴリズムを使用できるかどうかも疑問に思っています。


Django と PostgreSQL を使用しています。

助けていただければ幸いです。^^

役に立ちましたか?

解決

あなたは自分の欄にあなたの人気度をキャッシュし、基本となる値が変更されたときに、それを更新する必要があります。あなたは、その列の設定、データベースのインデックスをもする必要があります。あなたはまた、あなたの最も一般的なクエリの結果をキャッシュした場合、あなたは人気のクエリのパフォーマンスのための最も効果的な対策を取っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top