Open syuilo opened 1 year ago
個人的にはRustよりGoのほうがまだ読み書きしやすいのでGoを推したい
GoはGoogle製なので将来性が心配
なんならBunとかに置き換えるだけでもローコストで早くなったりしないのかな
Rustもどうやら開発コミュニティでn悶着あるみたいですので、個人的にはC# (ASP.NET Core 7.0)が良いかと思います。
bunのfetchとBun.serveに置き換えると速度がだいぶ向上する気はしますが、Crypto周りのNode互換APIがまだ未実装なのでそこだけなんとかすれば動く気はします(node-forgeなどに頼る?)
Node.jsのどの側面がMisskeyを遅くしているのか、そもそも本当にMisskeyが遅い原因がNode.jsなのかなどのプロファイリングをしないと、技術選定の裏付けが難しいかも
Rustにするのは俺がRustを覚える必要があるのでやめて欲しい(などと)
パフォーマンスのことを考えるとRustを推したいです。Goの方が読みやすいとありますが、Rustが独自のルールを導入しているだけで、慣れてくるとそんなんでも。
Rustにするのは俺がRustを覚える必要があるのでやめて欲しい(などと)
Denoを使えばNode.jsのエコシステムを使い回せるのでお得ではないかと。 速度を求めると結局Rustが出てくるけどな!
どちらにせよ、現在のプロジェクト構造を180°ひっくり返すようなものなので「本当にNode.jsが原因かどうか」を精査する必要はあるかと。
Rustはサーバー用度にはあまり使いたくないかも 本当にNodeを捨てるならGoやC#にするのが妥当かと
単純に一部で処理速度がほしいってことならNodeのままでC++などでaddonを作ったほうがいいかもしれない
Rust に一票
単純に一部で処理速度がほしいってことならNodeのままでC++などでaddonを作ったほうがいいかもしれない
ちなみにそれはもう Rust でやってる
あと別に Go はパフォーマンス思考の言語では全然ないので意味がない
Denoを使えばNode.jsのエコシステムを使い回せるのでお得ではないかと。 速度を求めると結局Rustが出てくるけどな!
ついでにパフォーマンスが必要ならwasm, もっと行くならffi(ただしunstable)でOK 純Rustの場合、async runtimeなど独自の実装の学習が必要なので、メインはTypescriptを維持したほうがいいと思います。
必要に応じてRustで作ったNodeのネイティブモジュールを読み込む今の方針でいいと思うんだけどなぁ
それよりN+1のほうがボトルネックだと思う Slow Query Logがすごい
Slow Query Log いる?
userid | dbid | toplevel | queryid | query | plans | total_plan_time | min_plan_time | max_plan_time | mean_plan_time | stddev_plan_time | calls | total_exec_time | min_exec_time | max_exec_time | mean_exec_time | stddev_exec_time | rows | shared_blks_hit | shared_blks_read | shared_blks_dirtied | shared_blks_written | local_blks_hit | local_blks_read | local_blks_dirtied | local_blks_written | temp_blks_read | temp_blks_written | blk_read_time | blk_write_time | temp_blk_read_time | temp_blk_write_time | wal_records | wal_fpi | wal_bytes | jit_functions | jit_generation_time | jit_inlining_count | jit_inlining_time | jit_optimization_count | jit_optimization_time | jit_emission_count | jit_emission_time
-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
16822 | 16426 | TRUE | -5599249229748355469 | SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."id" < $1 AND "note"."userId" = $2 AND ("note"."visibility" = $3 OR "note"."visibility" = $4)) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $5 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 835 | 195447.5877150000 | 0.048698 | 60334.023031000000 | 234.06896732335300 | 2602.273461907280 | 15726 | 17317624 | 1163440 | 1039 | 69 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 1098 | 918 | 6695730 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | 6047802554448485168 | SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user_list_joining" "userListJoining" ON "userListJoining"."userId" = "note"."userId" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "userListJoining"."userListId" = $1 AND (("note"."visibility" = $7 OR "note"."visibility" = $8) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $9 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6)))) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $10 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2405 | 1155895.4092980000 | 0.03266 | 47591.22705 | 480.6217918079010 | 1349.8401904937000 | 24362 | 24448039 | 7372857 | 1662 | 5848 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 2518 | 1435 | 10378057 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | -4295012842788197408 | SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."userId" = $1 AND ("note"."visibility" = $2 OR "note"."visibility" = $3)) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $4 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 38 | 109068.08901100000 | 1.266135 | 37117.411897 | 2870.212868710530 | 7575.171793860580 | 660 | 36941666 | 794634 | 2714 | 465 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 2560 | 2485 | 18471909 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | -1765600823722344336 | SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."id" > $1 AND "note"."userId" = $2 AND ("note"."visibility" = $3 OR "note"."visibility" = $4)) "distinctAlias" ORDER BY "distinctAlias"."note_id" ASC, "note_id" ASC LIMIT $5 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 280 | 86080.47453400000 | 0.026333 | 28175.532895 | 307.4302661928570 | 2489.899267513270 | 934 | 8923005 | 608268 | 2080 | 351 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 2155 | 1993 | 14337277 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | 1654036986644845719 | SELECT COUNT($1) AS "cnt" FROM "note" "Note" WHERE (NOT("Note"."userHost" IS NULL)) | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1 | 25877.970488 | 25877.970488 | 25877.970488 | 25877.970488 | 0.0 | 1 | 1151161 | 696734 | 2430 | 609 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 2287 | 2272 | 14826898 | 5 | 0.496294 | 0 | 0.0 | 1 | 0.462121 | 1 | 18.538977
16822 | 16426 | TRUE | -7540922400907630251 | SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."userId" = $1 AND (("note"."visibility" = $7 OR "note"."visibility" = $8) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $9 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6)))) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $10 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 130 | 616736.6207930000 | 0.5771040000000000 | 18576.845245 | 4744.127852253850 | 7238.885784631330 | 1948 | 283590723 | 5302448 | 3427 | 3126 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 2935 | 1861 | 13533311 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | -2691487539323277329 | SELECT "NoteUnread"."id" AS "NoteUnread_id", "NoteUnread"."userId" AS "NoteUnread_userId", "NoteUnread"."noteId" AS "NoteUnread_noteId", "NoteUnread"."isMentioned" AS "NoteUnread_isMentioned", "NoteUnread"."isSpecified" AS "NoteUnread_isSpecified", "NoteUnread"."noteUserId" AS "NoteUnread_noteUserId", "NoteUnread"."noteChannelId" AS "NoteUnread_noteChannelId" FROM "note_unread" "NoteUnread" WHERE ("NoteUnread"."noteChannelId" = $1 AND "NoteUnread"."userId" = $2) LIMIT $3 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 158135 | 10848611.660474000 | 0.007074 | 15160.238492 | 68.60348221755920 | 657.2720886558900 | 49756 | 67887204 | 38799457 | 118785 | 34243 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 158537 | 110504 | 858707672 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | -6004942123678083980 | SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."id" < $1 AND "reaction"."userId" = $2 AND (("note"."visibility" = $8 OR "note"."visibility" = $9) OR "note"."userId" = $3 OR $4 = ANY("note"."visibleUserIds") OR $5 = ANY("note"."mentions") OR ("note"."visibility" = $10 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $6) OR "note"."replyUserId" = $7)))) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $11 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 35 | 17222.766013 | 21.509164000000000 | 14722.809564000000 | 492.0790289428570 | 2443.374730779850 | 960 | 6760904 | 182160 | 18 | 48 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 29 | 11 | 89801 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | -6892100638206848872 | DELETE FROM "user" WHERE "id" IN ($1) | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1419 | 64698.88648200010 | 4.457217 | 11767.120392 | 45.59470506131070 | 337.8198344050560 | 1419 | 2082571 | 113871 | 51824 | 65 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 58321 | 51730 | 402572043 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 0 | 0.0
16822 | 16426 | TRUE | 1136360094718252966 | SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."userId" = $1 AND (("note"."visibility" = $26 OR "note"."visibility" = $27) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $28 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6))) AND "note"."userId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $7 AND "muting"."muteeId" != $8) AND ("note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $9 AND "muting"."muteeId" != $10)) AND ("note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $11 AND "muting"."muteeId" != $12)) AND ("note"."userHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $13)::jsonb ? "note"."userHost")) AND ("note"."replyUserHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $14)::jsonb ? "note"."replyUserHost")) AND ("note"."renoteUserHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $15)::jsonb ? "note"."renoteUserHost")) AND "note"."userId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $16) AND ("note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $17)) AND ("note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $18)) AND "note"."fileIds" != $29 AND ($19 = ANY("note"."attachedFileTypes") OR $20 = ANY("note"."attachedFileTypes") OR $21 = ANY("note"."attachedFileTypes") OR $22 = ANY("note"."attachedFileTypes") OR $23 = ANY("note"."attachedFileTypes") OR $24 = ANY("note"."attachedFileTypes") OR $25 = ANY("note"."attachedFileTypes")) AND "note"."cw" IS NULL AND $30 = (SELECT COUNT(*) FROM drive_file df WHERE df.id = ANY(note."fileIds") AND df."isSensitive" = $31)) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $32 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 11438 | 2843098.093984020 | 0.01945 | 7855.261708 | 248.5660162601850 | 547.1887165416280 | 81943 | 48143287 | 12225075 | 1688 | 5421 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 1817 | 1218 | 8952442 | 197709 | 31733.600407000000 | 2 | 375.01095700000000 | 1330 | 19569.19963200000 | 1330 | 197942.18525700000
userid dbid toplevel queryid query plans total_plan_time min_plan_time max_plan_time mean_plan_time stddev_plan_time calls total_exec_time min_exec_time max_exec_time mean_exec_time stddev_exec_time rows shared_blks_hit shared_blks_read shared_blks_dirtied shared_blks_written local_blks_hit local_blks_read local_blks_dirtied local_blks_written temp_blks_read temp_blks_written blk_read_time blk_write_time temp_blk_read_time temp_blk_write_time wal_records wal_fpi wal_bytes jit_functions jit_generation_time jit_inlining_count jit_inlining_time jit_optimization_count jit_optimization_time jit_emission_count jit_emission_time
16822 16426 TRUE -5599249229748355469 SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."id" < $1 AND "note"."userId" = $2 AND ("note"."visibility" = $3 OR "note"."visibility" = $4)) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $5 0 0.0 0.0 0.0 0.0 0.0 835 195447.5877150000 0.048698 60334.023031000000 234.06896732335300 2602.273461907280 15726 17317624 1163440 1039 69 0 0 0 0 0 0 0.0 0.0 0.0 0.0 1098 918 6695730 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE 6047802554448485168 SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user_list_joining" "userListJoining" ON "userListJoining"."userId" = "note"."userId" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "userListJoining"."userListId" = $1 AND (("note"."visibility" = $7 OR "note"."visibility" = $8) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $9 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6)))) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $10 0 0.0 0.0 0.0 0.0 0.0 2405 1155895.4092980000 0.03266 47591.22705 480.6217918079010 1349.8401904937000 24362 24448039 7372857 1662 5848 0 0 0 0 0 0 0.0 0.0 0.0 0.0 2518 1435 10378057 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE -4295012842788197408 SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."userId" = $1 AND ("note"."visibility" = $2 OR "note"."visibility" = $3)) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $4 0 0.0 0.0 0.0 0.0 0.0 38 109068.08901100000 1.266135 37117.411897 2870.212868710530 7575.171793860580 660 36941666 794634 2714 465 0 0 0 0 0 0 0.0 0.0 0.0 0.0 2560 2485 18471909 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE -1765600823722344336 SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."id" > $1 AND "note"."userId" = $2 AND ("note"."visibility" = $3 OR "note"."visibility" = $4)) "distinctAlias" ORDER BY "distinctAlias"."note_id" ASC, "note_id" ASC LIMIT $5 0 0.0 0.0 0.0 0.0 0.0 280 86080.47453400000 0.026333 28175.532895 307.4302661928570 2489.899267513270 934 8923005 608268 2080 351 0 0 0 0 0 0 0.0 0.0 0.0 0.0 2155 1993 14337277 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE 1654036986644845719 SELECT COUNT($1) AS "cnt" FROM "note" "Note" WHERE (NOT("Note"."userHost" IS NULL)) 0 0.0 0.0 0.0 0.0 0.0 1 25877.970488 25877.970488 25877.970488 25877.970488 0.0 1 1151161 696734 2430 609 0 0 0 0 0 0 0.0 0.0 0.0 0.0 2287 2272 14826898 5 0.496294 0 0.0 1 0.462121 1 18.538977
16822 16426 TRUE -7540922400907630251 SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."userId" = $1 AND (("note"."visibility" = $7 OR "note"."visibility" = $8) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $9 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6)))) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $10 0 0.0 0.0 0.0 0.0 0.0 130 616736.6207930000 0.5771040000000000 18576.845245 4744.127852253850 7238.885784631330 1948 283590723 5302448 3427 3126 0 0 0 0 0 0 0.0 0.0 0.0 0.0 2935 1861 13533311 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE -2691487539323277329 SELECT "NoteUnread"."id" AS "NoteUnread_id", "NoteUnread"."userId" AS "NoteUnread_userId", "NoteUnread"."noteId" AS "NoteUnread_noteId", "NoteUnread"."isMentioned" AS "NoteUnread_isMentioned", "NoteUnread"."isSpecified" AS "NoteUnread_isSpecified", "NoteUnread"."noteUserId" AS "NoteUnread_noteUserId", "NoteUnread"."noteChannelId" AS "NoteUnread_noteChannelId" FROM "note_unread" "NoteUnread" WHERE ("NoteUnread"."noteChannelId" = $1 AND "NoteUnread"."userId" = $2) LIMIT $3 0 0.0 0.0 0.0 0.0 0.0 158135 10848611.660474000 0.007074 15160.238492 68.60348221755920 657.2720886558900 49756 67887204 38799457 118785 34243 0 0 0 0 0 0 0.0 0.0 0.0 0.0 158537 110504 858707672 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE -6004942123678083980 SELECT DISTINCT "distinctAlias"."reaction_id" AS "ids_reaction_id", "distinctAlias"."reaction_id" FROM (SELECT "reaction"."id" AS "reaction_id", "reaction"."createdAt" AS "reaction_createdAt", "reaction"."userId" AS "reaction_userId", "reaction"."noteId" AS "reaction_noteId", "reaction"."reaction" AS "reaction_reaction", "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost" FROM "note_reaction" "reaction" LEFT JOIN "note" "note" ON "note"."id"="reaction"."noteId" WHERE "reaction"."id" < $1 AND "reaction"."userId" = $2 AND (("note"."visibility" = $8 OR "note"."visibility" = $9) OR "note"."userId" = $3 OR $4 = ANY("note"."visibleUserIds") OR $5 = ANY("note"."mentions") OR ("note"."visibility" = $10 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $6) OR "note"."replyUserId" = $7)))) "distinctAlias" ORDER BY "distinctAlias"."reaction_id" DESC, "reaction_id" ASC LIMIT $11 0 0.0 0.0 0.0 0.0 0.0 35 17222.766013 21.509164000000000 14722.809564000000 492.0790289428570 2443.374730779850 960 6760904 182160 18 48 0 0 0 0 0 0 0.0 0.0 0.0 0.0 29 11 89801 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE -6892100638206848872 DELETE FROM "user" WHERE "id" IN ($1) 0 0.0 0.0 0.0 0.0 0.0 1419 64698.88648200010 4.457217 11767.120392 45.59470506131070 337.8198344050560 1419 2082571 113871 51824 65 0 0 0 0 0 0 0.0 0.0 0.0 0.0 58321 51730 402572043 0 0.0 0 0.0 0 0.0 0 0.0
16822 16426 TRUE 1136360094718252966 SELECT DISTINCT "distinctAlias"."note_id" AS "ids_note_id", "distinctAlias"."note_id" FROM (SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."reactionAcceptance" AS "note_reactionAcceptance", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."movedToUri" AS "user_movedToUri", "user"."movedAt" AS "user_movedAt", "user"."alsoKnownAs" AS "user_alsoKnownAs", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."avatarUrl" AS "user_avatarUrl", "user"."bannerUrl" AS "user_bannerUrl", "user"."avatarBlurhash" AS "user_avatarBlurhash", "user"."bannerBlurhash" AS "user_bannerBlurhash", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isRoot" AS "user_isRoot", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."token" AS "user_token", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."reactionAcceptance" AS "reply_reactionAcceptance", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."reactionAcceptance" AS "renote_reactionAcceptance", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."movedToUri" AS "replyUser_movedToUri", "replyUser"."movedAt" AS "replyUser_movedAt", "replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."avatarUrl" AS "replyUser_avatarUrl", "replyUser"."bannerUrl" AS "replyUser_bannerUrl", "replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash", "replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isRoot" AS "replyUser_isRoot", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."token" AS "replyUser_token", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."movedToUri" AS "renoteUser_movedToUri", "renoteUser"."movedAt" AS "renoteUser_movedAt", "renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."avatarUrl" AS "renoteUser_avatarUrl", "renoteUser"."bannerUrl" AS "renoteUser_bannerUrl", "renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash", "renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isRoot" AS "renoteUser_isRoot", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."token" AS "renoteUser_token" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id"="note"."userId" LEFT JOIN "note" "reply" ON "reply"."id"="note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id"="note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id"="reply"."userId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id"="renote"."userId" WHERE "note"."userId" = $1 AND (("note"."visibility" = $26 OR "note"."visibility" = $27) OR "note"."userId" = $2 OR $3 = ANY("note"."visibleUserIds") OR $4 = ANY("note"."mentions") OR ("note"."visibility" = $28 AND ("note"."userId" IN (SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $5) OR "note"."replyUserId" = $6))) AND "note"."userId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $7 AND "muting"."muteeId" != $8) AND ("note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $9 AND "muting"."muteeId" != $10)) AND ("note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN (SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $11 AND "muting"."muteeId" != $12)) AND ("note"."userHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $13)::jsonb ? "note"."userHost")) AND ("note"."replyUserHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $14)::jsonb ? "note"."replyUserHost")) AND ("note"."renoteUserHost" IS NULL OR NOT ((SELECT "user_profile"."mutedInstances" AS "user_profile_mutedInstances" FROM "user_profile" "user_profile" WHERE "user_profile"."userId" = $15)::jsonb ? "note"."renoteUserHost")) AND "note"."userId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $16) AND ("note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $17)) AND ("note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN (SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $18)) AND "note"."fileIds" != $29 AND ($19 = ANY("note"."attachedFileTypes") OR $20 = ANY("note"."attachedFileTypes") OR $21 = ANY("note"."attachedFileTypes") OR $22 = ANY("note"."attachedFileTypes") OR $23 = ANY("note"."attachedFileTypes") OR $24 = ANY("note"."attachedFileTypes") OR $25 = ANY("note"."attachedFileTypes")) AND "note"."cw" IS NULL AND $30 = (SELECT COUNT(*) FROM drive_file df WHERE [df.id](http://df.id/) = ANY(note."fileIds") AND df."isSensitive" = $31)) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT $32 0 0.0 0.0 0.0 0.0 0.0 11438 2843098.093984020 0.01945 7855.261708 248.5660162601850 547.1887165416280 81943 48143287 12225075 1688 5421 0 0 0 0 0 0 0.0 0.0 0.0 0.0 1817 1218 8952442 197709 31733.600407000000 2 375.01095700000000 1330 19569.19963200000 1330 197942.18525700000
そのうちひとつを整形
SELECT DISTINCT
"distinctAlias"."note_id" AS "ids_note_id",
"distinctAlias"."note_id"
FROM
(
SELECT
"note"."id" AS "note_id",
"note"."createdAt" AS "note_createdAt",
"note"."replyId" AS "note_replyId",
"note"."renoteId" AS "note_renoteId",
"note"."threadId" AS "note_threadId",
"note"."text" AS "note_text",
"note"."name" AS "note_name",
"note"."cw" AS "note_cw",
"note"."userId" AS "note_userId",
"note"."localOnly" AS "note_localOnly",
"note"."reactionAcceptance" AS "note_reactionAcceptance",
"note"."renoteCount" AS "note_renoteCount",
"note"."repliesCount" AS "note_repliesCount",
"note"."reactions" AS "note_reactions",
"note"."visibility" AS "note_visibility",
"note"."uri" AS "note_uri",
"note"."url" AS "note_url",
"note"."fileIds" AS "note_fileIds",
"note"."attachedFileTypes" AS "note_attachedFileTypes",
"note"."visibleUserIds" AS "note_visibleUserIds",
"note"."mentions" AS "note_mentions",
"note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers",
"note"."emojis" AS "note_emojis",
"note"."tags" AS "note_tags",
"note"."hasPoll" AS "note_hasPoll",
"note"."channelId" AS "note_channelId",
"note"."userHost" AS "note_userHost",
"note"."replyUserId" AS "note_replyUserId",
"note"."replyUserHost" AS "note_replyUserHost",
"note"."renoteUserId" AS "note_renoteUserId",
"note"."renoteUserHost" AS "note_renoteUserHost",
"user"."id" AS "user_id",
"user"."createdAt" AS "user_createdAt",
"user"."updatedAt" AS "user_updatedAt",
"user"."lastFetchedAt" AS "user_lastFetchedAt",
"user"."lastActiveDate" AS "user_lastActiveDate",
"user"."hideOnlineStatus" AS "user_hideOnlineStatus",
"user"."username" AS "user_username",
"user"."name" AS "user_name",
"user"."followersCount" AS "user_followersCount",
"user"."followingCount" AS "user_followingCount",
"user"."movedToUri" AS "user_movedToUri",
"user"."movedAt" AS "user_movedAt",
"user"."alsoKnownAs" AS "user_alsoKnownAs",
"user"."notesCount" AS "user_notesCount",
"user"."avatarId" AS "user_avatarId",
"user"."bannerId" AS "user_bannerId",
"user"."avatarUrl" AS "user_avatarUrl",
"user"."bannerUrl" AS "user_bannerUrl",
"user"."avatarBlurhash" AS "user_avatarBlurhash",
"user"."bannerBlurhash" AS "user_bannerBlurhash",
"user"."tags" AS "user_tags",
"user"."isSuspended" AS "user_isSuspended",
"user"."isLocked" AS "user_isLocked",
"user"."isBot" AS "user_isBot",
"user"."isCat" AS "user_isCat",
"user"."isRoot" AS "user_isRoot",
"user"."isExplorable" AS "user_isExplorable",
"user"."isDeleted" AS "user_isDeleted",
"user"."emojis" AS "user_emojis",
"user"."host" AS "user_host",
"user"."inbox" AS "user_inbox",
"user"."sharedInbox" AS "user_sharedInbox",
"user"."featured" AS "user_featured",
"user"."uri" AS "user_uri",
"user"."followersUri" AS "user_followersUri",
"user"."token" AS "user_token",
"reply"."id" AS "reply_id",
"reply"."createdAt" AS "reply_createdAt",
"reply"."replyId" AS "reply_replyId",
"reply"."renoteId" AS "reply_renoteId",
"reply"."threadId" AS "reply_threadId",
"reply"."text" AS "reply_text",
"reply"."name" AS "reply_name",
"reply"."cw" AS "reply_cw",
"reply"."userId" AS "reply_userId",
"reply"."localOnly" AS "reply_localOnly",
"reply"."reactionAcceptance" AS "reply_reactionAcceptance",
"reply"."renoteCount" AS "reply_renoteCount",
"reply"."repliesCount" AS "reply_repliesCount",
"reply"."reactions" AS "reply_reactions",
"reply"."visibility" AS "reply_visibility",
"reply"."uri" AS "reply_uri",
"reply"."url" AS "reply_url",
"reply"."fileIds" AS "reply_fileIds",
"reply"."attachedFileTypes" AS "reply_attachedFileTypes",
"reply"."visibleUserIds" AS "reply_visibleUserIds",
"reply"."mentions" AS "reply_mentions",
"reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers",
"reply"."emojis" AS "reply_emojis",
"reply"."tags" AS "reply_tags",
"reply"."hasPoll" AS "reply_hasPoll",
"reply"."channelId" AS "reply_channelId",
"reply"."userHost" AS "reply_userHost",
"reply"."replyUserId" AS "reply_replyUserId",
"reply"."replyUserHost" AS "reply_replyUserHost",
"reply"."renoteUserId" AS "reply_renoteUserId",
"reply"."renoteUserHost" AS "reply_renoteUserHost",
"renote"."id" AS "renote_id",
"renote"."createdAt" AS "renote_createdAt",
"renote"."replyId" AS "renote_replyId",
"renote"."renoteId" AS "renote_renoteId",
"renote"."threadId" AS "renote_threadId",
"renote"."text" AS "renote_text",
"renote"."name" AS "renote_name",
"renote"."cw" AS "renote_cw",
"renote"."userId" AS "renote_userId",
"renote"."localOnly" AS "renote_localOnly",
"renote"."reactionAcceptance" AS "renote_reactionAcceptance",
"renote"."renoteCount" AS "renote_renoteCount",
"renote"."repliesCount" AS "renote_repliesCount",
"renote"."reactions" AS "renote_reactions",
"renote"."visibility" AS "renote_visibility",
"renote"."uri" AS "renote_uri",
"renote"."url" AS "renote_url",
"renote"."fileIds" AS "renote_fileIds",
"renote"."attachedFileTypes" AS "renote_attachedFileTypes",
"renote"."visibleUserIds" AS "renote_visibleUserIds",
"renote"."mentions" AS "renote_mentions",
"renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers",
"renote"."emojis" AS "renote_emojis",
"renote"."tags" AS "renote_tags",
"renote"."hasPoll" AS "renote_hasPoll",
"renote"."channelId" AS "renote_channelId",
"renote"."userHost" AS "renote_userHost",
"renote"."replyUserId" AS "renote_replyUserId",
"renote"."replyUserHost" AS "renote_replyUserHost",
"renote"."renoteUserId" AS "renote_renoteUserId",
"renote"."renoteUserHost" AS "renote_renoteUserHost",
"replyUser"."id" AS "replyUser_id",
"replyUser"."createdAt" AS "replyUser_createdAt",
"replyUser"."updatedAt" AS "replyUser_updatedAt",
"replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt",
"replyUser"."lastActiveDate" AS "replyUser_lastActiveDate",
"replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus",
"replyUser"."username" AS "replyUser_username",
"replyUser"."name" AS "replyUser_name",
"replyUser"."followersCount" AS "replyUser_followersCount",
"replyUser"."followingCount" AS "replyUser_followingCount",
"replyUser"."movedToUri" AS "replyUser_movedToUri",
"replyUser"."movedAt" AS "replyUser_movedAt",
"replyUser"."alsoKnownAs" AS "replyUser_alsoKnownAs",
"replyUser"."notesCount" AS "replyUser_notesCount",
"replyUser"."avatarId" AS "replyUser_avatarId",
"replyUser"."bannerId" AS "replyUser_bannerId",
"replyUser"."avatarUrl" AS "replyUser_avatarUrl",
"replyUser"."bannerUrl" AS "replyUser_bannerUrl",
"replyUser"."avatarBlurhash" AS "replyUser_avatarBlurhash",
"replyUser"."bannerBlurhash" AS "replyUser_bannerBlurhash",
"replyUser"."tags" AS "replyUser_tags",
"replyUser"."isSuspended" AS "replyUser_isSuspended",
"replyUser"."isLocked" AS "replyUser_isLocked",
"replyUser"."isBot" AS "replyUser_isBot",
"replyUser"."isCat" AS "replyUser_isCat",
"replyUser"."isRoot" AS "replyUser_isRoot",
"replyUser"."isExplorable" AS "replyUser_isExplorable",
"replyUser"."isDeleted" AS "replyUser_isDeleted",
"replyUser"."emojis" AS "replyUser_emojis",
"replyUser"."host" AS "replyUser_host",
"replyUser"."inbox" AS "replyUser_inbox",
"replyUser"."sharedInbox" AS "replyUser_sharedInbox",
"replyUser"."featured" AS "replyUser_featured",
"replyUser"."uri" AS "replyUser_uri",
"replyUser"."followersUri" AS "replyUser_followersUri",
"replyUser"."token" AS "replyUser_token",
"renoteUser"."id" AS "renoteUser_id",
"renoteUser"."createdAt" AS "renoteUser_createdAt",
"renoteUser"."updatedAt" AS "renoteUser_updatedAt",
"renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt",
"renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate",
"renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus",
"renoteUser"."username" AS "renoteUser_username",
"renoteUser"."name" AS "renoteUser_name",
"renoteUser"."followersCount" AS "renoteUser_followersCount",
"renoteUser"."followingCount" AS "renoteUser_followingCount",
"renoteUser"."movedToUri" AS "renoteUser_movedToUri",
"renoteUser"."movedAt" AS "renoteUser_movedAt",
"renoteUser"."alsoKnownAs" AS "renoteUser_alsoKnownAs",
"renoteUser"."notesCount" AS "renoteUser_notesCount",
"renoteUser"."avatarId" AS "renoteUser_avatarId",
"renoteUser"."bannerId" AS "renoteUser_bannerId",
"renoteUser"."avatarUrl" AS "renoteUser_avatarUrl",
"renoteUser"."bannerUrl" AS "renoteUser_bannerUrl",
"renoteUser"."avatarBlurhash" AS "renoteUser_avatarBlurhash",
"renoteUser"."bannerBlurhash" AS "renoteUser_bannerBlurhash",
"renoteUser"."tags" AS "renoteUser_tags",
"renoteUser"."isSuspended" AS "renoteUser_isSuspended",
"renoteUser"."isLocked" AS "renoteUser_isLocked",
"renoteUser"."isBot" AS "renoteUser_isBot",
"renoteUser"."isCat" AS "renoteUser_isCat",
"renoteUser"."isRoot" AS "renoteUser_isRoot",
"renoteUser"."isExplorable" AS "renoteUser_isExplorable",
"renoteUser"."isDeleted" AS "renoteUser_isDeleted",
"renoteUser"."emojis" AS "renoteUser_emojis",
"renoteUser"."host" AS "renoteUser_host",
"renoteUser"."inbox" AS "renoteUser_inbox",
"renoteUser"."sharedInbox" AS "renoteUser_sharedInbox",
"renoteUser"."featured" AS "renoteUser_featured",
"renoteUser"."uri" AS "renoteUser_uri",
"renoteUser"."followersUri" AS "renoteUser_followersUri",
"renoteUser"."token" AS "renoteUser_token"
FROM
"note" "note"
INNER JOIN
"user_list_joining" "userListJoining"
ON "userListJoining"."userId" = "note"."userId"
INNER JOIN
"user" "user"
ON "user"."id" = "note"."userId"
LEFT JOIN
"note" "reply"
ON "reply"."id" = "note"."replyId"
LEFT JOIN
"note" "renote"
ON "renote"."id" = "note"."renoteId"
LEFT JOIN
"user" "replyUser"
ON "replyUser"."id" = "reply"."userId"
LEFT JOIN
"user" "renoteUser"
ON "renoteUser"."id" = "renote"."userId"
WHERE
"userListJoining"."userListId" = $1
AND (
(
"note"."visibility" = $7
OR "note"."visibility" = $8
)
OR "note"."userId" = $2
OR $3 = ANY("note"."visibleUserIds")
OR $4 = ANY("note"."mentions")
OR (
"note"."visibility" = $9
AND (
"note"."userId" IN(
SELECT
"following"."followeeId" AS "following_followeeId"
FROM
"following" "following"
WHERE
"following"."followerId" = $5
)
OR "note"."replyUserId" = $6
)
)
)
) "distinctAlias"
ORDER BY
"distinctAlias"."note_id" DESC,
"note_id" ASC
LIMIT $10
サブクエリやめてPreloadすれば早くなるんじゃないかな
純Rustの場合、async runtimeなど独自の実装の学習が必要なので、メインはTypescriptを維持したほうがいいと思います。
少し調べてみたのですが、Rustでは非同期処理の実装が乱立しているみたいですね。 純Rustになった後で大揉めする原因になると思うので、私も純Rust案には賛同出来ないです。
通りすがりの意見ですが、風のうわさで伺った「TypeError
がバックエンドで発生している」という状況がある以上 (disclaimer: 頻度は知りません)、コードベースを100%Rustにすることは現実的ではないと考えています。
Rust や Go 案にどちらかというと賛成です。
・メモリのフットプリント削減が見込める
・パフォーマンスの問題がより理解しやすく、予見しやすくなる
・おもしろそう
C#は、パフォーマンスの完全なコントロールを目的とするのなら、中途半端な気もします。(私は.NETを使わないので、偏見がありますが)
依存ライブラリを移行できなかったらどうしようもできないので、どちらにせよRustで作ったNodeのネイティブモジュールをパフォーマンスの影響が大きいところから採用していくという現在の方針を推し進めるのが良いかと思います。
メモリ関連の問題はGCのあるGoでもある程度は改善するでしょうが、GCやメモリリークの問題も考えたらGCのないRustを使う方がより良いとは思います。Rustに移行するにしても、移行や学習のコストを考えると必要な部分だけで段階的に行うのが良いと思います。
Rustが実際にパフォーマンスが良いかどうかは抜きにしても、一般にRustの方がパフォーマンスが良いというイメージが広まっていて、Rustで書かれているという理由で他ソフトウェアが選択されることが増えているのでMisskeyを使ってもらうためにはRustにするしかなくなってきている
そういう理由で技術選定するのは嫌い
本当に速くしたかったらスロークエリなんとかするほうが先じゃないですか 言語を変えてスロークエリ超えられるパフォーマンス出るなら別ですがそんなことないと思う 平均 500msかかっているクエリがある以上、言語を変えても500msかかり続けるのではないですか
Rustが実際にパフォーマンスが良いかどうかは抜きにしても、一般にRustの方がパフォーマンスが良いというイメージが広まっていて、Rustで書かれているという理由で他ソフトウェアが選択されることが増えているのでMisskeyを使ってもらうためにはRustにするしかなくなってきている
気持ちはわかるけど、そういう理由でRustに置き換えたら100%利用者が増えるとは限らないし、戦うなら他の分野で戦う方法だってあるはず
重たい作業だし、これによるメリットがデメリットを上回る可能性もある 選定する理由としてはあと2,3個無いと不安
バックエンドが速いことが選ばれる条件ならErlang/Elixirを使ってるPleromaが流行ってないのはおかしい
喫緊の課題としては、TLの構造の変更(https://github.com/misskey-dev/misskey/issues/9325 )などでDBクエリを改善したり、ジョブキューやRedis周りをいじったり、パラメータ調節したりが大事というのはそれはそう Rust の方がNodeJSと比べて最適化の伸びしろがあるのは事実と思うので、チューニングを詰めるつもりがあるなら、長期的に移行する構想をもっておくのは悪くないのではと思う。
Rustで書かれているという理由で他ソフトウェアが選択されることが増えているので
JSやaltJSではないという理由ではないでしょうか。altJSの代わりとしてRustを採用する実装が多くたまたまRustで一致しているだけかと思われます。
Rustが実際にパフォーマンスが良いかどうかは抜きにしても、一般にRustの方がパフォーマンスが良いというイメージが広まっていて
Rust関係者は相当SEOがお上手のようですね。 コンパイラのバックエンドにLLVMが居て、Clangに匹敵するパフォーマンスが出るので、GCCやMSVCより速いというだけのことです。
Pleromaは機能的に違いすぎるからなあ
(カスタム絵文字使えないらしいけど)リアクションあるし違いすぎるとは言えないんじゃ?
いくら良いものを作っても使ってもらえなきゃ意味がないというのがある
Rustを使ってないからMisskeyを使わないという意見を私は聞いたことがない
結局の所、CPUバウンドなのかIOバウンドなのかというのはよく言われる話ですが[要出典]、現状のパフォーマンスのボトルネックがIOバウンドならば言語を変えても無駄骨になるだけなので慎重に検討されたほうがよろしいかと
追記: 以下の出力からわかるとおり、現状のTSは8万行あります。これらのボトルネックがどこにあるのか計測せずに言語を乗り換えると、万が一CPUバウンドではなかったときに労力がかなり重くつくと考えられます。
参考: コミットaf3258dc79488b73435819e7799eb1515f15a6aa
時点のtokei
の出力:
$ tokei
===============================================================================
Language Files Lines Code Comments Blanks
===============================================================================
CSS 4 239 211 0 28
JavaScript 222 6930 6330 51 549
JSON 6 361 361 0 0
Markdown 2 5 0 5 0
Pug 13 557 441 10 106
SVG 3 10 10 0 0
Plain Text 1 4 0 3 1
TypeScript 775 80525 66921 2962 10642
-------------------------------------------------------------------------------
HTML 1 20 15 4 1
|- CSS 1 4 4 0 0
(Total) 24 19 4 1
===============================================================================
Total 1027 88651 74289 3035 11327
===============================================================================
こういう"殿ご乱心"があるからMisskeyを使いたくないという意見はめっちゃ聞くけど
Rustであることが多くの人に重要視されているなら、Calckeyが主流になっていると思うので、そこを重視する人は多くはないと思います
Rustを使ってないからMisskeyを使わないという意見を私は聞いたことがない
毎週のようにそういう投稿や要望が流れてくるからRust化が強く望まれているのは感じる
Calckeyは流石にこれからじゃない?
Rustを理由としている例がどれなのか知りたい
Calckey等のフォークがRustへの置き換えを進めているのは話に聞くけど、拾うべき意見は正直そこじゃないなって感じがする
世界が狭すぎる
Rust の方がNodeJSと比べて最適化の伸びしろがあるのは事実
Runtime Profile-Guided Optimization が比較的簡単にできるJIT系言語(C#やJava等)のほうがその辺は有利です。 また、少なくともC#にはHardware Intrinsicsがあるので、SIMD関連でLLVMの真似事をしたければある程度はできますし(.NET 8.0で AVX-512に対応予定)、LLVMが単純なコードから最適化によって生成するコードより高速なC#コードを書くこともC++同様可能です。(LLVMが吐いたアセンブリが元々最適である場合を除く)
Rustであることが多くの人に重要視されているなら、Calckeyが主流になっていると思うので、そこを重視する人は多くはないと思います
Misskey→Calckeyに乗り換えるのはよく見るけど逆はほとんど見かけないわね
Misskey→Calckeyに乗り換えるのはよく見るけど逆はほとんど見かけないわね
Misskeyを知ってからCalckeyを知る(Calckeyを先に知ることはない)んだからそりゃそうでは
MisskeyサイドがCalckeyからマイグレーションする方法を提供しているわけでもないし
ぶっちゃけTwitterだって2011年ぐらいまでRuby on Railsだったんだし、言語変えるより前にやるべきことはいっぱいあると思う。
仮に、PostgreSQLまわりのスロークエリの改善が完了して、ボトルネックがバックエンドに移動した場合(言い換えるとバックエンドにボトルネックがなければバックエンドの最適化をしても全く無意味)、たぶんNode.js上のボトルネックを排除したほうが、言語を変更するよりも良好なパフォーマンスが得られるのではないかと思います。加えて、RustやCと比較するのは酷ですが、普通にNode.jsは速いと思っているので、積極的に変更するモチベーションはないと思います(Rust自体は良い言語だと思います)。
Node.js使っててネガティブな意見もらうことはあってもポジティブな意見もらうことが全くないのよね
Node.js使っててネガティブな意見もらうことはあってもポジティブな意見もらうことが全くないのよね
それは同意できるが、DenoやBunなどJavaScriptのまま移行できる選択肢があるからね
Deno/Bunもパフォーマンス誇張しすぎみたいな意見があるから実際どれくらい優れているのかは分からないけど次のステップとしてはそれらになる可能性がある
ここでも繰り返し述べられているし、再三の主張にはなるけど、重そうな処理をRustで書かれたNode.jsのネイティブモジュールへ移行するのが簡単かつ効果的だと思う
全面的なRustへの移行はコストが高すぎますし、重そうな処理だけ移行する場合と比べて劇的に改善するようなことは無いと思います
Summary
Node.jsはパフォーマンス上の問題があるため
Goとかでもいいけど