まず、この質問に対してより良いタイトルを思い付くことができなかったので、申し訳ありません。
私のウェブサイトにはバッジ/アチーブメントシステムがあります。コミュニティユーザーには、ウェブサイトでのアクティビティに応じて特定のバッジが付与されます。以下のSQLの例では、少なくとも100のフォーラム投稿を行ったユーザーの数を取得しています(informix dbを使用しています)。バージョン10)
SELECT tjm.userid::INTEGER AS user_id,
EXTEND(DBINFO("UTC_TO_DATETIME",tjm.creationdate/1000), year to fraction)
AS earned_date
FROM TABLE(
MULTISET(
SELECT jm.userid, jm.creationdate, (
SELECT COUNT(*) from TABLE(
MULTISET(
SELECT userid, creationdate
FROM jive:jivemessage
)
) AS i
WHERE i.userid = jm.userid AND i.creationdate < jm.creationdate
) + 1 AS row_num
FROM jive:jivemessage jm
)
) AS tjm
WHERE tjm.row_num=100
このSQLの実行には約30分以上かかります。非常に大きなコミュニティがあり、何百万ものフォーラム投稿があります。
クエリのパフォーマンスを改善するための解決策があるかどうか知りたいですか?これに似た40個のSQLクエリがありますが、テーブルとアクティビティが異なるため、実行時間を短縮しようとしています。