|
75,342 min
22%
|
4 ms
|
1,079,951,912
ankipro
|
SELECT "v2"."decks"."id" FROM "v2"."decks" WHERE ("v2"."decks"."ancestry" LIKE $1 OR "v2"."decks"."id" = $2) AND "v2"."decks"."state" != $3
|
|
16,728 min
5%
|
12 ms
|
80,749,645
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1) OR ancestry LIKE $2) AND state NOT IN ($3,$4,$5) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $6 AND frozen = $7 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
11,722 min
3%
|
401 ms
|
1,754,289
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."public_state" = $1 AND "v2"."decks"."ancestry" = $2 AND "v2"."decks"."sharing_token" = $3 LIMIT $4
|
|
10,420 min
3%
|
3 ms
|
226,791,106
ankipro
|
SELECT "v2"."card_progresses"."id", "v2"."card_progresses"."ease_factor", "v2"."card_progresses"."frozen", "v2"."card_progresses"."interval", "v2"."card_progresses"."learning_state", "v2"."card_progresses"."learning_steps_index", "v2"."card_progresses"."next_review_at", "v2"."card_progresses"."ordinal", "v2"."card_progresses"."raw_next_review_at", "v2"."card_progresses"."to_learn_in_current_sl_round", "v2"."card_progresses"."note_id", "v2"."card_progresses"."user_id", "v2"."card_progresses"."created_at", "v2"."card_progresses"."updated_at", "v2"."card_progresses"."fetch_priority", "v2"."card_progresses"."deck_id", "v2"."card_progresses"."undo_data" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."note_id" = $1 AND "v2"."card_progresses"."ordinal" = $2 AND "v2"."card_progresses"."user_id" = $3 LIMIT $4
Covered by index on (note_id)
Rows: 112754352
Row progression: 112754352, 0
Row estimates
- note_id (=): 0
- user_id (=): 772
- ordinal (=): 112754352
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
7,758 min
2%
|
8 ms
|
59,627,728
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)
|
|
7,662 min
2%
|
0 ms
|
1,374,091,234
ankipro
|
SELECT "v2"."deck_counters"."id", "v2"."deck_counters"."recalculate_at", "v2"."deck_counters"."deck_id" FROM "v2"."deck_counters" WHERE "v2"."deck_counters"."deck_id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) AND "v2"."deck_counters"."user_id" = $11
Covered by index on (deck_id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- deck_id (=): 1
- user_id (=): 448
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
7,594 min
2%
|
3 ms
|
141,647,418
ankipro
|
SELECT "v2"."card_progresses"."note_id" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."deck_id" = $1 AND "v2"."card_progresses"."user_id" = $2 AND "v2"."card_progresses"."frozen" = $3
Covered by index on (deck_id, user_id, note_id)
Rows: 112754352
Row progression: 112754352, 273, 0
Row estimates
- deck_id (=): 273
- user_id (=): 772
- frozen (=): 56377176
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
7,421 min
2%
|
5 ms
|
87,854,339
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."created_at", "v2"."notes"."updated_at", "v2"."notes"."library_note_id", "v2"."notes"."library_card_id", "v2"."notes"."anki_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."id" = $1 LIMIT $2
|
|
7,046 min
2%
|
1 ms
|
379,293,245
ankipro
|
SELECT COUNT(id) AS total, SUM(CASE WHEN NOT frozen AND learning_state = $1 THEN $2 ELSE $3 END) AS new, SUM(CASE WHEN NOT frozen AND learning_state = $4 AND next_review_at < $5 THEN $6 ELSE $7 END) AS learning, SUM(CASE WHEN NOT frozen AND learning_state = $8 AND next_review_at < $9 THEN $10 ELSE $11 END) AS graduated, SUM(CASE WHEN NOT frozen AND learning_state = $12 THEN $13 ELSE $14 END) AS learning_total, SUM(CASE WHEN NOT frozen AND learning_state = $15 THEN $16 ELSE $17 END) AS graduated_total, SUM(CASE WHEN NOT frozen AND learning_state = $18 THEN $19 ELSE $20 END) AS study_again, SUM(CASE WHEN NOT frozen AND learning_state = $21 THEN $22 ELSE $23 END) AS got_it, SUM(CASE WHEN frozen THEN $24 ELSE $25 END) as frozen, SUM(CASE WHEN NOT frozen AND learning_state IN($26, $27, $28) AND next_review_at < $29 THEN $30 ELSE $31 END) as offline_available, MIN(CASE WHEN NOT frozen AND next_review_at > $32 THEN next_review_at ELSE $33 END) as recalculate_at FROM v2.card_progresses WHERE user_id = $34 AND deck_id IN ($35)
Covered by index on (deck_id, user_id, note_id)
Rows: 112754352
Row progression: 112754352, 273, 0
Row estimates
- deck_id (=): 273
- user_id (=): 772
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
6,292 min
2%
|
7 ms
|
50,883,029
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4, $5, $6, $7)
|
|
5,646 min
2%
|
1 ms
|
350,822,879
ankipro
|
SELECT "v2"."decks"."id" AS t0_r0, "v2"."decks"."deck_collaborators_count" AS t0_r1, "v2"."decks"."deleted_by_user_at" AS t0_r2, "v2"."decks"."downvotes" AS t0_r3, "v2"."decks"."import_error_message" AS t0_r4, "v2"."decks"."name" AS t0_r5, "v2"."decks"."last_reset_at" AS t0_r6, "v2"."decks"."public_state" AS t0_r7, "v2"."decks"."sharing_token" AS t0_r8, "v2"."decks"."state" AS t0_r9, "v2"."decks"."visibility" AS t0_r10, "v2"."decks"."upvotes" AS t0_r11, "v2"."decks"."user_id" AS t0_r12, "v2"."decks"."created_at" AS t0_r13, "v2"."decks"."updated_at" AS t0_r14, "v2"."decks"."ancestry" AS t0_r15, "v2"."decks"."slug" AS t0_r16, "v2"."decks"."seo_description" AS t0_r17, "v2"."decks"."description" AS t0_r18, "v2"."decks"."category" AS t0_r19, "v2"."decks"."cloned_times_count" AS t0_r20, "v2"."decks"."is_indexable" AS t0_r21, "v2"."decks"."study_score" AS t0_r22, "v2"."decks"."library_deck_id" AS t0_r23, "v2"."decks"."file_hash" AS t0_r24, "v2"."decks"."cloned_from_id" AS t0_r25, "v2"."decks"."anki_deck_id" AS t0_r26, "v2"."decks"."studiers_count" AS t0_r27, "v2"."decks"."deck_id" AS t0_r28, "v2"."decks"."moved_at" AS t0_r29, "v2"."decks"."source" AS t0_r30, "v2"."decks"."reviews_count" AS t0_r31, "v2"."decks"."duplicated_from_id" AS t0_r32, "v2"."decks"."no_cards_limit" AS t0_r33, "v2"."decks"."category_id" AS t0_r34, "v2"."deck_settings"."id" AS t1_r0, "v2"."deck_settings"."algorithm_preset" AS t1_r1, "v2"."deck_settings"."deck_id" AS t1_r2, "v2"."deck_settings"."easy_interval_minutes" AS t1_r3, "v2"."deck_settings"."easy_bonus_percent" AS t1_r4, "v2"."deck_settings"."font_settings" AS t1_r5, "v2"."deck_settings"."graduated_interval_minutes" AS t1_r6, "v2"."deck_settings"."interval_modifier_percent" AS t1_r7, "v2"."deck_settings"."last_sync_at" AS t1_r8, "v2"."deck_settings"."library_sharing" AS t1_r9, "v2"."deck_settings"."new_cards_per_day" AS t1_r10, "v2"."deck_settings"."reverse_mode" AS t1_r11, "v2"."deck_settings"."offline_mode" AS t1_r12, "v2"."deck_settings"."sharing" AS t1_r13, "v2"."deck_settings"."steps_in_minutes" AS t1_r14, "v2"."deck_settings"."shuffle_mode" AS t1_r15, "v2"."deck_settings"."tts_autoplay" AS t1_r16, "v2"."deck_settings"."tts" AS t1_r17, "v2"."deck_settings"."tts_back_side_language" AS t1_r18, "v2"."deck_settings"."tts_front_side_language" AS t1_r19, "v2"."deck_settings"."user_id" AS t1_r20, "v2"."deck_settings"."created_at" AS t1_r21, "v2"."deck_settings"."updated_at" AS t1_r22, "v2"."deck_settings"."position" AS t1_r23, "v2"."deck_settings"."tts_whole_card_pronunciation" AS t1_r24, "v2"."deck_settings"."state" AS t1_r25, "v2"."deck_settings"."max_cards_per_day" AS t1_r26, "v2"."deck_settings"."card_preset_id" AS t1_r27, "v2"."deck_settings"."max_interval_minutes" AS t1_r28, "v2"."deck_settings"."tts_speed" AS t1_r29, "v2"."deck_settings"."tts_slower_replay" AS t1_r30, "v2"."deck_settings"."folder_id" AS t1_r31, "v2"."deck_counters"."id" AS t2_r0, "v2"."deck_counters"."deck_id" AS t2_r1, "v2"."deck_counters"."got_it_count" AS t2_r2, "v2"."deck_counters"."graduated_count" AS t2_r3, "v2"."deck_counters"."frozen_count" AS t2_r4, "v2"."deck_counters"."learning_count" AS t2_r5, "v2"."deck_counters"."new_count" AS t2_r6, "v2"."deck_counters"."presented_count" AS t2_r7, "v2"."deck_counters"."reviewed_today_count" AS t2_r8, "v2"."deck_counters"."recalculate_at" AS t2_r9, "v2"."deck_counters"."study_again_count" AS t2_r10, "v2"."deck_counters"."to_learn_today_count" AS t2_r11, "v2"."deck_counters"."to_review_count" AS t2_r12, "v2"."deck_counters"."total_new_count" AS t2_r13, "v2"."deck_counters"."user_id" AS t2_r14, "v2"."deck_counters"."created_at" AS t2_r15, "v2"."deck_counters"."updated_at" AS t2_r16, "v2"."deck_counters"."total_not_learned_count" AS t2_r17, "v2"."deck_counters"."offline_available_count" AS t2_r18, "v2"."deck_counters"."learning_total_count" AS t2_r19, "v2"."deck_counters"."graduated_total_count" AS t2_r20 FROM "v2"."decks" INNER JOIN "v2"."deck_settings" ON "v2"."deck_settings"."deck_id" = "v2"."decks"."id" INNER JOIN "v2"."deck_counters" ON "v2"."deck_counters"."deck_id" = "v2"."decks"."id" WHERE ("v2"."decks"."state" IN ($1, $2, $3, $4, $5, $6) AND "v2"."decks"."public_state" = $7 OR "v2"."decks"."state" = $8 OR "v2"."decks"."state" = $9) AND (v2.deck_settings.user_id = $10 AND v2.deck_counters.user_id = $11) AND "v2"."decks"."id" = $12 AND "v2"."decks"."id" = $13
|
|
5,061 min
1%
|
5 ms
|
62,119,181
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" = $1
|
|
5,026 min
1%
|
7 ms
|
41,185,075
ankipro
|
SELECT notes.id, notes.deck_id, notes.template_kind, notes.fields, notes.cards_count, notes.css, notes.created_at FROM v2.notes AS notes WHERE notes.deck_id IN ($1) ORDER BY notes.created_at DESC, notes.id DESC OFFSET $2 LIMIT $3
|
|
4,500 min
1%
|
4 ms
|
65,214,207
ankipro
|
SELECT "v2"."decks"."id" FROM "v2"."decks" WHERE ("v2"."decks"."ancestry" LIKE $1 OR "v2"."decks"."id" = $2)
|
|
4,309 min
1%
|
4 ms
|
58,943,308
ankipro
|
SELECT "v2"."decks"."id" FROM "v2"."decks" WHERE "v2"."decks"."state" != $1 AND "v2"."decks"."id" IN (SELECT "v2"."deck_settings"."deck_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."user_id" = $2 AND "v2"."deck_settings"."state" = $3)
|
|
4,249 min
1%
|
2 ms
|
143,827,415
ankipro
|
SELECT "v2"."deck_settings"."deck_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."user_id" = $1 AND "v2"."deck_settings"."state" = $2
|
|
4,083 min
1%
|
4 ms
|
57,546,507
ankipro
|
SELECT "v2"."note_attachments"."attachment_id" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" = $1
|
|
3,820 min
1%
|
1 ms
|
351,633,541
ankipro
|
SELECT DISTINCT "v2"."decks"."id" FROM "v2"."decks" INNER JOIN "v2"."deck_settings" ON "v2"."deck_settings"."deck_id" = "v2"."decks"."id" INNER JOIN "v2"."deck_counters" ON "v2"."deck_counters"."deck_id" = "v2"."decks"."id" WHERE ("v2"."decks"."state" IN ($1, $2, $3, $4, $5, $6) AND "v2"."decks"."public_state" = $7 OR "v2"."decks"."state" = $8 OR "v2"."decks"."state" = $9) AND (v2.deck_settings.user_id = $10 AND v2.deck_counters.user_id = $11) AND "v2"."decks"."id" = $12 LIMIT $13
|
|
3,796 min
1%
|
21 ms
|
10,603,223
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.id IN ($3) ORDER BY id ASC LIMIT $4 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $5 WHERE $6=$7 ORDER BY notes.id ASC LIMIT $8
|
|
3,606 min
1%
|
0 ms
|
557,774,405
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."id" = $1 LIMIT $2
Covered by index on (id)
Rows: 40098216
Row progression: 40098216, 1
Row estimates
- id (=): 1
Existing indexes
- id PRIMARY
- id, user_id PRIMARY
- ancestry
- ancestry text_pattern_ops
- ancestry varchar_pattern_ops
- anki_deck_id
- category_id
- cloned_from_id
- deck_import_id
- deleted_by_user_at, user_id
- id, state
- library_deck_id
- public_state, visibility
- sharing_token varchar_pattern_ops UNIQUE
- state
- user_id
- user_id
|
|
3,438 min
1%
|
2 ms
|
93,217,893
ankipro
|
SELECT "v2"."deck_settings"."deck_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."user_id" = $1 AND "v2"."deck_settings"."folder_id" IS NULL
|
|
2,801 min
0.8%
|
9 ms
|
19,539,465
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50)
|
|
2,562 min
0.8%
|
19 ms
|
7,986,072
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2) OR ancestry LIKE $3 OR ancestry LIKE $4) AND state NOT IN ($5,$6,$7) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $8 AND frozen = $9 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
2,444 min
0.7%
|
29 ms
|
4,985,322
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4) OR ancestry LIKE $5 OR ancestry LIKE $6 OR ancestry LIKE $7 OR ancestry LIKE $8) AND state NOT IN ($9,$10,$11) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $12 AND frozen = $13 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
2,443 min
0.7%
|
25 ms
|
5,906,450
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3) OR ancestry LIKE $4 OR ancestry LIKE $5 OR ancestry LIKE $6) AND state NOT IN ($7,$8,$9) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $10 AND frozen = $11 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
2,374 min
0.7%
|
5 ms
|
30,812,364
ankipro
|
SELECT $1 AS one FROM "v2"."decks" WHERE ("v2"."decks"."ancestry" LIKE $2 OR "v2"."decks"."id" = $3) AND "v2"."decks"."state" != $4 AND "v2"."decks"."state" IN ($5, $6, $7, $8, $9, $10) LIMIT $11
|
|
2,365 min
0.7%
|
33 ms
|
4,295,959
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5) OR ancestry LIKE $6 OR ancestry LIKE $7 OR ancestry LIKE $8 OR ancestry LIKE $9 OR ancestry LIKE $10) AND state NOT IN ($11,$12,$13) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $14 AND frozen = $15 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
2,158 min
0.6%
|
37 ms
|
3,538,307
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6) OR ancestry LIKE $7 OR ancestry LIKE $8 OR ancestry LIKE $9 OR ancestry LIKE $10 OR ancestry LIKE $11 OR ancestry LIKE $12) AND state NOT IN ($13,$14,$15) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $16 AND frozen = $17 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
2,071 min
0.6%
|
0 ms
|
840,253,754
ankipro
|
UPDATE "users" SET "last_seen_time" = $1, "last_seen_ip" = $2, "country_code" = $3 WHERE "users"."id" = $4
Covered by index on (id)
Rows: 7914080
Row progression: 7914080, 1
Row estimates
- id (=): 1
Existing indexes
- id PRIMARY
- analytics_id
- country_code
- email varchar_pattern_ops
- id, timezone_offset
- lower((email)::text)
- qon_id
- reset_password_token WHERE reset_password_token IS NOT NULL
- stripe_customer_id
- uid, provider UNIQUE
- username UNIQUE
|
|
1,936 min
0.6%
|
39 ms
|
2,964,941
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7) OR ancestry LIKE $8 OR ancestry LIKE $9 OR ancestry LIKE $10 OR ancestry LIKE $11 OR ancestry LIKE $12 OR ancestry LIKE $13 OR ancestry LIKE $14) AND state NOT IN ($15,$16,$17) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $18 AND frozen = $19 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,690 min
0.5%
|
41 ms
|
2,452,672
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8) OR ancestry LIKE $9 OR ancestry LIKE $10 OR ancestry LIKE $11 OR ancestry LIKE $12 OR ancestry LIKE $13 OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16) AND state NOT IN ($17,$18,$19) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $20 AND frozen = $21 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,550 min
0.5%
|
17 ms
|
5,495,218
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."public_state" = $1 AND "v2"."decks"."ancestry" = $2 AND "v2"."decks"."visibility" IN ($3, $4) AND "v2"."decks"."slug" IS NOT NULL AND "v2"."decks"."library_deck_id" = $5 LIMIT $6
|
|
1,483 min
0.4%
|
0 ms
|
235,920,925
ankipro
|
SELECT "v2"."deck_settings"."id", "v2"."deck_settings"."algorithm_preset", "v2"."deck_settings"."deck_id", "v2"."deck_settings"."easy_interval_minutes", "v2"."deck_settings"."easy_bonus_percent", "v2"."deck_settings"."font_settings", "v2"."deck_settings"."graduated_interval_minutes", "v2"."deck_settings"."interval_modifier_percent", "v2"."deck_settings"."last_sync_at", "v2"."deck_settings"."library_sharing", "v2"."deck_settings"."new_cards_per_day", "v2"."deck_settings"."reverse_mode", "v2"."deck_settings"."offline_mode", "v2"."deck_settings"."sharing", "v2"."deck_settings"."steps_in_minutes", "v2"."deck_settings"."shuffle_mode", "v2"."deck_settings"."tts_autoplay", "v2"."deck_settings"."tts", "v2"."deck_settings"."tts_back_side_language", "v2"."deck_settings"."tts_front_side_language", "v2"."deck_settings"."user_id", "v2"."deck_settings"."created_at", "v2"."deck_settings"."updated_at", "v2"."deck_settings"."position", "v2"."deck_settings"."tts_whole_card_pronunciation", "v2"."deck_settings"."state", "v2"."deck_settings"."max_cards_per_day", "v2"."deck_settings"."card_preset_id", "v2"."deck_settings"."max_interval_minutes", "v2"."deck_settings"."tts_speed", "v2"."deck_settings"."tts_slower_replay", "v2"."deck_settings"."folder_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."deck_id" = $1
Covered by index on (deck_id)
Rows: 40316548
Row progression: 40316548, 1
Row estimates
- deck_id (=): 1
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id
- folder_id
- user_id
- user_id
|
|
1,483 min
0.4%
|
44 ms
|
2,021,966
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9) OR ancestry LIKE $10 OR ancestry LIKE $11 OR ancestry LIKE $12 OR ancestry LIKE $13 OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18) AND state NOT IN ($19,$20,$21) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $22 AND frozen = $23 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,332 min
0.4%
|
46 ms
|
1,753,336
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10) OR ancestry LIKE $11 OR ancestry LIKE $12 OR ancestry LIKE $13 OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20) AND state NOT IN ($21,$22,$23) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $24 AND frozen = $25 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,269 min
0.4%
|
10 ms
|
7,577,391
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."deck_id" = $1 AND "v2"."notes"."id" > $2 ORDER BY "v2"."notes"."id" ASC LIMIT $3
|
|
1,263 min
0.4%
|
23 ms
|
3,234,233
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.id IN ($3,$4,$5,$6,$7) ORDER BY id ASC LIMIT $8 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $9 WHERE $10=$11 ORDER BY notes.id ASC LIMIT $12
|
|
1,232 min
0.4%
|
0 ms
|
203,764,256
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."id" = $1
Covered by index on (id)
Rows: 40098216
Row progression: 40098216, 1
Row estimates
- id (=): 1
Existing indexes
- id PRIMARY
- id, user_id PRIMARY
- ancestry
- ancestry text_pattern_ops
- ancestry varchar_pattern_ops
- anki_deck_id
- category_id
- cloned_from_id
- deck_import_id
- deleted_by_user_at, user_id
- id, state
- library_deck_id
- public_state, visibility
- sharing_token varchar_pattern_ops UNIQUE
- state
- user_id
- user_id
|
|
1,215 min
0.4%
|
48 ms
|
1,530,300
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) OR ancestry LIKE $12 OR ancestry LIKE $13 OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22) AND state NOT IN ($23,$24,$25) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $26 AND frozen = $27 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,167 min
0.3%
|
23 ms
|
3,109,467
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.id IN ($3,$4,$5) ORDER BY id ASC LIMIT $6 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $7 WHERE $8=$9 ORDER BY notes.id ASC LIMIT $10
|
|
1,145 min
0.3%
|
1 ms
|
132,956,791
ankipro
|
UPDATE "v2"."deck_counters" SET "recalculate_at" = $1, "updated_at" = $2 WHERE "v2"."deck_counters"."id" = $3 AND "v2"."deck_counters"."deck_id" = $4
Covered by index on (id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- id (=): 1
- deck_id (=): 1
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
1,118 min
0.3%
|
50 ms
|
1,350,471
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) OR ancestry LIKE $13 OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24) AND state NOT IN ($25,$26,$27) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $28 AND frozen = $29 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
1,118 min
0.3%
|
8 ms
|
7,924,181
ankipro
|
UPDATE "v2"."decks" SET "state" = $1 WHERE "v2"."decks"."ancestry" LIKE $2 AND "v2"."decks"."state" != $3
Details
CREATE INDEX CONCURRENTLY ON decks USING gist (ancestry gist_trgm_ops)
Rows: 40098216
Row progression: 40098216, 3396429
Row estimates
- ancestry (~~): 3396429
- state (<>): 32078573
Existing indexes
- id PRIMARY
- id, user_id PRIMARY
- ancestry
- ancestry text_pattern_ops
- ancestry varchar_pattern_ops
- anki_deck_id
- category_id
- cloned_from_id
- deck_import_id
- deleted_by_user_at, user_id
- id, state
- library_deck_id
- public_state, visibility
- sharing_token varchar_pattern_ops UNIQUE
- state
- user_id
- user_id
|
|
1,117 min
0.3%
|
8 ms
|
8,156,238
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."created_at", "v2"."notes"."updated_at", "v2"."notes"."library_note_id", "v2"."notes"."library_card_id", "v2"."notes"."anki_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."id" IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50)
|
|
1,097 min
0.3%
|
2 ms
|
38,163,989
ankipro
|
SELECT notes.id, notes.deck_id, notes.template_kind, notes.fields, notes.cards_count, notes.css, notes.created_at FROM v2.notes AS notes WHERE notes.deck_id IN ($1) ORDER BY notes.created_at DESC, notes.id DESC LIMIT $2
|
|
1,046 min
0.3%
|
15 ms
|
4,079,460
ankipro
|
SELECT "v2"."decks"."id" AS t0_r0, "v2"."decks"."deck_collaborators_count" AS t0_r1, "v2"."decks"."deleted_by_user_at" AS t0_r2, "v2"."decks"."downvotes" AS t0_r3, "v2"."decks"."import_error_message" AS t0_r4, "v2"."decks"."name" AS t0_r5, "v2"."decks"."last_reset_at" AS t0_r6, "v2"."decks"."public_state" AS t0_r7, "v2"."decks"."sharing_token" AS t0_r8, "v2"."decks"."state" AS t0_r9, "v2"."decks"."visibility" AS t0_r10, "v2"."decks"."upvotes" AS t0_r11, "v2"."decks"."user_id" AS t0_r12, "v2"."decks"."created_at" AS t0_r13, "v2"."decks"."updated_at" AS t0_r14, "v2"."decks"."ancestry" AS t0_r15, "v2"."decks"."slug" AS t0_r16, "v2"."decks"."seo_description" AS t0_r17, "v2"."decks"."description" AS t0_r18, "v2"."decks"."category" AS t0_r19, "v2"."decks"."cloned_times_count" AS t0_r20, "v2"."decks"."is_indexable" AS t0_r21, "v2"."decks"."study_score" AS t0_r22, "v2"."decks"."library_deck_id" AS t0_r23, "v2"."decks"."file_hash" AS t0_r24, "v2"."decks"."cloned_from_id" AS t0_r25, "v2"."decks"."anki_deck_id" AS t0_r26, "v2"."decks"."studiers_count" AS t0_r27, "v2"."decks"."deck_id" AS t0_r28, "v2"."decks"."moved_at" AS t0_r29, "v2"."decks"."source" AS t0_r30, "v2"."decks"."reviews_count" AS t0_r31, "v2"."decks"."duplicated_from_id" AS t0_r32, "v2"."decks"."no_cards_limit" AS t0_r33, "v2"."decks"."category_id" AS t0_r34, "v2"."deck_settings"."id" AS t1_r0, "v2"."deck_settings"."algorithm_preset" AS t1_r1, "v2"."deck_settings"."deck_id" AS t1_r2, "v2"."deck_settings"."easy_interval_minutes" AS t1_r3, "v2"."deck_settings"."easy_bonus_percent" AS t1_r4, "v2"."deck_settings"."font_settings" AS t1_r5, "v2"."deck_settings"."graduated_interval_minutes" AS t1_r6, "v2"."deck_settings"."interval_modifier_percent" AS t1_r7, "v2"."deck_settings"."last_sync_at" AS t1_r8, "v2"."deck_settings"."library_sharing" AS t1_r9, "v2"."deck_settings"."new_cards_per_day" AS t1_r10, "v2"."deck_settings"."reverse_mode" AS t1_r11, "v2"."deck_settings"."offline_mode" AS t1_r12, "v2"."deck_settings"."sharing" AS t1_r13, "v2"."deck_settings"."steps_in_minutes" AS t1_r14, "v2"."deck_settings"."shuffle_mode" AS t1_r15, "v2"."deck_settings"."tts_autoplay" AS t1_r16, "v2"."deck_settings"."tts" AS t1_r17, "v2"."deck_settings"."tts_back_side_language" AS t1_r18, "v2"."deck_settings"."tts_front_side_language" AS t1_r19, "v2"."deck_settings"."user_id" AS t1_r20, "v2"."deck_settings"."created_at" AS t1_r21, "v2"."deck_settings"."updated_at" AS t1_r22, "v2"."deck_settings"."position" AS t1_r23, "v2"."deck_settings"."tts_whole_card_pronunciation" AS t1_r24, "v2"."deck_settings"."state" AS t1_r25, "v2"."deck_settings"."max_cards_per_day" AS t1_r26, "v2"."deck_settings"."card_preset_id" AS t1_r27, "v2"."deck_settings"."max_interval_minutes" AS t1_r28, "v2"."deck_settings"."tts_speed" AS t1_r29, "v2"."deck_settings"."tts_slower_replay" AS t1_r30, "v2"."deck_settings"."folder_id" AS t1_r31, "v2"."deck_counters"."id" AS t2_r0, "v2"."deck_counters"."deck_id" AS t2_r1, "v2"."deck_counters"."got_it_count" AS t2_r2, "v2"."deck_counters"."graduated_count" AS t2_r3, "v2"."deck_counters"."frozen_count" AS t2_r4, "v2"."deck_counters"."learning_count" AS t2_r5, "v2"."deck_counters"."new_count" AS t2_r6, "v2"."deck_counters"."presented_count" AS t2_r7, "v2"."deck_counters"."reviewed_today_count" AS t2_r8, "v2"."deck_counters"."recalculate_at" AS t2_r9, "v2"."deck_counters"."study_again_count" AS t2_r10, "v2"."deck_counters"."to_learn_today_count" AS t2_r11, "v2"."deck_counters"."to_review_count" AS t2_r12, "v2"."deck_counters"."total_new_count" AS t2_r13, "v2"."deck_counters"."user_id" AS t2_r14, "v2"."deck_counters"."created_at" AS t2_r15, "v2"."deck_counters"."updated_at" AS t2_r16, "v2"."deck_counters"."total_not_learned_count" AS t2_r17, "v2"."deck_counters"."offline_available_count" AS t2_r18, "v2"."deck_counters"."learning_total_count" AS t2_r19, "v2"."deck_counters"."graduated_total_count" AS t2_r20 FROM "v2"."decks" INNER JOIN "v2"."deck_settings" ON "v2"."deck_settings"."deck_id" = "v2"."decks"."id" INNER JOIN "v2"."deck_counters" ON "v2"."deck_counters"."deck_id" = "v2"."decks"."id" WHERE ("v2"."decks"."ancestry" LIKE $1 OR "v2"."decks"."id" = $2) AND "v2"."decks"."state" != $3 AND (v2.deck_settings.user_id = $4 AND v2.deck_counters.user_id = $5)
|
|
1,029 min
0.3%
|
5 ms
|
11,284,469
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3)
|
|
1,011 min
0.3%
|
5 ms
|
11,299,481
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2)
|
|
993 min
0.3%
|
52 ms
|
1,154,183
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13) OR ancestry LIKE $14 OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26) AND state NOT IN ($27,$28,$29) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $30 AND frozen = $31 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
987 min
0.3%
|
0 ms
|
865,734,070
ankipro
|
SELECT "streaks"."id", "streaks"."duration", "streaks"."end_date", "streaks"."days_until_next_freeze" FROM "streaks" WHERE "streaks"."user_id" = $1
Covered by index on (user_id)
Rows: 4752549
Row progression: 4752549, 13
Row estimates
- user_id (=): 13
Existing indexes
- id PRIMARY
- user_id
- user_id, daterange(start_date, end_date, '[)'::text) GIST
- user_id WHERE end_date IS NULL UNIQUE
|
|
951 min
0.3%
|
1 ms
|
56,347,891
ankipro
|
SELECT "v2"."decks"."id" AS t0_r0, "v2"."decks"."deck_collaborators_count" AS t0_r1, "v2"."decks"."deleted_by_user_at" AS t0_r2, "v2"."decks"."downvotes" AS t0_r3, "v2"."decks"."import_error_message" AS t0_r4, "v2"."decks"."name" AS t0_r5, "v2"."decks"."last_reset_at" AS t0_r6, "v2"."decks"."public_state" AS t0_r7, "v2"."decks"."sharing_token" AS t0_r8, "v2"."decks"."state" AS t0_r9, "v2"."decks"."visibility" AS t0_r10, "v2"."decks"."upvotes" AS t0_r11, "v2"."decks"."user_id" AS t0_r12, "v2"."decks"."created_at" AS t0_r13, "v2"."decks"."updated_at" AS t0_r14, "v2"."decks"."ancestry" AS t0_r15, "v2"."decks"."slug" AS t0_r16, "v2"."decks"."seo_description" AS t0_r17, "v2"."decks"."description" AS t0_r18, "v2"."decks"."category" AS t0_r19, "v2"."decks"."cloned_times_count" AS t0_r20, "v2"."decks"."is_indexable" AS t0_r21, "v2"."decks"."study_score" AS t0_r22, "v2"."decks"."library_deck_id" AS t0_r23, "v2"."decks"."file_hash" AS t0_r24, "v2"."decks"."cloned_from_id" AS t0_r25, "v2"."decks"."anki_deck_id" AS t0_r26, "v2"."decks"."studiers_count" AS t0_r27, "v2"."decks"."deck_id" AS t0_r28, "v2"."decks"."moved_at" AS t0_r29, "v2"."decks"."source" AS t0_r30, "v2"."decks"."reviews_count" AS t0_r31, "v2"."decks"."duplicated_from_id" AS t0_r32, "v2"."decks"."no_cards_limit" AS t0_r33, "v2"."decks"."category_id" AS t0_r34, "v2"."deck_settings"."id" AS t1_r0, "v2"."deck_settings"."algorithm_preset" AS t1_r1, "v2"."deck_settings"."deck_id" AS t1_r2, "v2"."deck_settings"."easy_interval_minutes" AS t1_r3, "v2"."deck_settings"."easy_bonus_percent" AS t1_r4, "v2"."deck_settings"."font_settings" AS t1_r5, "v2"."deck_settings"."graduated_interval_minutes" AS t1_r6, "v2"."deck_settings"."interval_modifier_percent" AS t1_r7, "v2"."deck_settings"."last_sync_at" AS t1_r8, "v2"."deck_settings"."library_sharing" AS t1_r9, "v2"."deck_settings"."new_cards_per_day" AS t1_r10, "v2"."deck_settings"."reverse_mode" AS t1_r11, "v2"."deck_settings"."offline_mode" AS t1_r12, "v2"."deck_settings"."sharing" AS t1_r13, "v2"."deck_settings"."steps_in_minutes" AS t1_r14, "v2"."deck_settings"."shuffle_mode" AS t1_r15, "v2"."deck_settings"."tts_autoplay" AS t1_r16, "v2"."deck_settings"."tts" AS t1_r17, "v2"."deck_settings"."tts_back_side_language" AS t1_r18, "v2"."deck_settings"."tts_front_side_language" AS t1_r19, "v2"."deck_settings"."user_id" AS t1_r20, "v2"."deck_settings"."created_at" AS t1_r21, "v2"."deck_settings"."updated_at" AS t1_r22, "v2"."deck_settings"."position" AS t1_r23, "v2"."deck_settings"."tts_whole_card_pronunciation" AS t1_r24, "v2"."deck_settings"."state" AS t1_r25, "v2"."deck_settings"."max_cards_per_day" AS t1_r26, "v2"."deck_settings"."card_preset_id" AS t1_r27, "v2"."deck_settings"."max_interval_minutes" AS t1_r28, "v2"."deck_settings"."tts_speed" AS t1_r29, "v2"."deck_settings"."tts_slower_replay" AS t1_r30, "v2"."deck_settings"."folder_id" AS t1_r31, "v2"."deck_counters"."id" AS t2_r0, "v2"."deck_counters"."deck_id" AS t2_r1, "v2"."deck_counters"."got_it_count" AS t2_r2, "v2"."deck_counters"."graduated_count" AS t2_r3, "v2"."deck_counters"."frozen_count" AS t2_r4, "v2"."deck_counters"."learning_count" AS t2_r5, "v2"."deck_counters"."new_count" AS t2_r6, "v2"."deck_counters"."presented_count" AS t2_r7, "v2"."deck_counters"."reviewed_today_count" AS t2_r8, "v2"."deck_counters"."recalculate_at" AS t2_r9, "v2"."deck_counters"."study_again_count" AS t2_r10, "v2"."deck_counters"."to_learn_today_count" AS t2_r11, "v2"."deck_counters"."to_review_count" AS t2_r12, "v2"."deck_counters"."total_new_count" AS t2_r13, "v2"."deck_counters"."user_id" AS t2_r14, "v2"."deck_counters"."created_at" AS t2_r15, "v2"."deck_counters"."updated_at" AS t2_r16, "v2"."deck_counters"."total_not_learned_count" AS t2_r17, "v2"."deck_counters"."offline_available_count" AS t2_r18, "v2"."deck_counters"."learning_total_count" AS t2_r19, "v2"."deck_counters"."graduated_total_count" AS t2_r20 FROM "v2"."decks" INNER JOIN "v2"."deck_settings" ON "v2"."deck_settings"."deck_id" = "v2"."decks"."id" INNER JOIN "v2"."deck_counters" ON "v2"."deck_counters"."deck_id" = "v2"."decks"."id" WHERE "v2"."decks"."public_state" = $1 AND "v2"."decks"."id" = $2 AND (v2.deck_settings.user_id = $3 AND v2.deck_counters.user_id = $4) ORDER BY v2.deck_settings.position ASC, COALESCE(v2.decks.moved_at, v2.decks.created_at) DESC
|
|
921 min
0.3%
|
2 ms
|
28,111,438
ankipro
|
SELECT * FROM v2.notes WHERE deck_id IN ($1) AND TRIM( REGEXP_REPLACE( REGEXP_REPLACE( LOWER(notes.fields->>$2), $3, $4, $5 ), $6, $7, $8 ) ) = LOWER(TRIM($9)) ORDER BY id ASC
|
|
904 min
0.3%
|
0 ms
|
116,213,678
ankipro
|
UPDATE "v2"."deck_counters" SET "reviewed_today_count" = $1, "recalculate_at" = $2, "to_learn_today_count" = $3, "updated_at" = $4 WHERE "v2"."deck_counters"."id" = $5 AND "v2"."deck_counters"."deck_id" = $6
Covered by index on (id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- id (=): 1
- deck_id (=): 1
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
898 min
0.3%
|
53 ms
|
1,010,677
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) OR ancestry LIKE $15 OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28) AND state NOT IN ($29,$30,$31) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $32 AND frozen = $33 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
894 min
0.3%
|
28 ms
|
1,909,132
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."deck_id" = $1 ORDER BY "v2"."notes"."id" ASC LIMIT $2
|
|
889 min
0.3%
|
0 ms
|
6,349,855,103
ankipro
|
SET application_name='/home/application/bundle/ruby/3.4.0/bin/rake'
|
|
885 min
0.3%
|
1 ms
|
50,652,684
ankipro
|
SELECT "v2"."card_progresses"."note_id", "v2"."card_progresses"."next_review_at", "v2"."card_progresses"."learning_state", "v2"."card_progresses"."frozen", "v2"."card_progresses"."ordinal" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."deck_id" = $1 AND "v2"."card_progresses"."note_id" IN ($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21) AND "v2"."card_progresses"."user_id" = $22
Covered by index on (note_id)
Rows: 112754352
Row progression: 112754352, 0
Row estimates
- note_id (=): 0
- deck_id (=): 273
- user_id (=): 772
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
820 min
0.2%
|
0 ms
|
6,370,692,409
ankipro
|
SET application_name='/home/application/bundle/ruby/3.4.0/bin/pitchfork'
|
|
820 min
0.2%
|
22 ms
|
2,231,325
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.id IN ($3,$4) ORDER BY id ASC LIMIT $5 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $6 WHERE $7=$8 ORDER BY notes.id ASC LIMIT $9
|
|
814 min
0.2%
|
55 ms
|
880,474
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15) OR ancestry LIKE $16 OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30) AND state NOT IN ($31,$32,$33) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $34 AND frozen = $35 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
777 min
0.2%
|
0 ms
|
7,140,846,714
ankipro
|
SELECT $1 AS one FROM "solid_queue_ready_executions" WHERE "solid_queue_ready_executions"."queue_name" = $2 LIMIT $3 FOR UPDATE SKIP LOCKED
|
|
773 min
0.2%
|
1 ms
|
86,515,782
ankipro
|
UPDATE "v2"."deck_counters" SET "recalculate_at" = $1 WHERE "v2"."deck_counters"."id" = $2 AND "v2"."deck_counters"."deck_id" = $3
Covered by index on (id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- id (=): 1
- deck_id (=): 1
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
763 min
0.2%
|
6 ms
|
8,205,491
ankipro
|
INSERT INTO "v2"."notes" ("id","template_kind","fields","cards_count","deck_id","created_at","updated_at","library_note_id","library_card_id","anki_id","css") VALUES (nextval($1),$2,$3,$4,$5,$6,$7,$8,$9,$10,$11),(nextval($12),$13,$14,$15,$16,$17,$18,$19,$20,$21,$22),(nextval($23),$24,$25,$26,$27,$28,$29,$30,$31,$32,$33),(nextval($34),$35,$36,$37,$38,$39,$40,$41,$42,$43,$44),(nextval($45),$46,$47,$48,$49,$50,$51,$52,$53,$54,$55),(nextval($56),$57,$58,$59,$60,$61,$62,$63,$64,$65,$66),(nextval($67),$68,$69,$70,$71,$72,$73,$74,$75,$76,$77),(nextval($78),$79,$80,$81,$82,$83,$84,$85,$86,$87,$88),(nextval($89),$90,$91,$92,$93,$94,$95,$96,$97,$98,$99),(nextval($100),$101,$102,$103,$104,$105,$106,$107,$108,$109,$110),(nextval($111),$112,$113,$114,$115,$116,$117,$118,$119,$120,$121),(nextval($122),$123,$124,$125,$126,$127,$128,$129,$130,$131,$132),(nextval($133),$134,$135,$136,$137,$138,$139,$140,$141,$142,$143),(nextval($144),$145,$146,$147,$148,$149,$150,$151,$152,$153,$154),(nextval($155),$156,$157,$158,$159,$160,$161,$162,$163,$164,$165),(nextval($166),$167,$168,$169,$170,$171,$172,$173,$174,$175,$176),(nextval($177),$178,$179,$180,$181,$182,$183,$184,$185,$186,$187),(nextval($188),$189,$190,$191,$192,$193,$194,$195,$196,$197,$198),(nextval($199),$200,$201,$202,$203,$204,$205,$206,$207,$208,$209),(nextval($210),$211,$212,$213,$214,$215,$216,$217,$218,$219,$220),(nextval($221),$222,$223,$224,$225,$226,$227,$228,$229,$230,$231),(nextval($232),$233,$234,$235,$236,$237,$238,$239,$240,$241,$242),(nextval($243),$244,$245,$246,$247,$248,$249,$250,$251,$252,$253),(nextval($254),$255,$256,$257,$258,$259,$260,$261,$262,$263,$264),(nextval($265),$266,$267,$268,$269,$270,$271,$272,$273,$274,$275),(nextval($276),$277,$278,$279,$280,$281,$282,$283,$284,$285,$286),(nextval($287),$288,$289,$290,$291,$292,$293,$294,$295,$296,$297),(nextval($298),$299,$300,$301,$302,$303,$304,$305,$306,$307,$308),(nextval($309),$310,$311,$312,$313,$314,$315,$316,$317,$318,$319),(nextval($320),$321,$322,$323,$324,$325,$326,$327,$328,$329,$330),(nextval($331),$332,$333,$334,$335,$336,$337,$338,$339,$340,$341),(nextval($342),$343,$344,$345,$346,$347,$348,$349,$350,$351,$352),(nextval($353),$354,$355,$356,$357,$358,$359,$360,$361,$362,$363),(nextval($364),$365,$366,$367,$368,$369,$370,$371,$372,$373,$374),(nextval($375),$376,$377,$378,$379,$380,$381,$382,$383,$384,$385),(nextval($386),$387,$388,$389,$390,$391,$392,$393,$394,$395,$396),(nextval($397),$398,$399,$400,$401,$402,$403,$404,$405,$406,$407),(nextval($408),$409,$410,$411,$412,$413,$414,$415,$416,$417,$418),(nextval($419),$420,$421,$422,$423,$424,$425,$426,$427,$428,$429),(nextval($430),$431,$432,$433,$434,$435,$436,$437,$438,$439,$440),(nextval($441),$442,$443,$444,$445,$446,$447,$448,$449,$450,$451),(nextval($452),$453,$454,$455,$456,$457,$458,$459,$460,$461,$462),(nextval($463),$464,$465,$466,$467,$468,$469,$470,$471,$472,$473),(nextval($474),$475,$476,$477,$478,$479,$480,$481,$482,$483,$484),(nextval($485),$486,$487,$488,$489,$490,$491,$492,$493,$494,$495),(nextval($496),$497,$498,$499,$500,$501,$502,$503,$504,$505,$506),(nextval($507),$508,$509,$510,$511,$512,$513,$514,$515,$516,$517),(nextval($518),$519,$520,$521,$522,$523,$524,$525,$526,$527,$528),(nextval($529),$530,$531,$532,$533,$534,$535,$536,$537,$538,$539),(nextval($540),$541,$542,$543,$544,$545,$546,$547,$548,$549,$550) RETURNING "id"
|
|
749 min
0.2%
|
6 ms
|
7,800,111
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4, $5)
|
|
742 min
0.2%
|
0 ms
|
979,945,462
ankipro
|
SELECT "users"."id", "users"."analytics_id", "users"."uid", "users"."apple_auth", "users"."timezone_offset", "users"."created_at", "users"."updated_at", "users"."onboarding_data", "users"."experiments", "users"."locale", "users"."provider", "users"."email", "users"."password_digest", "users"."current_app_version", "users"."premium", "users"."reset_password_token", "users"."reset_password_sent_at", "users"."app_features", "users"."metadata", "users"."name", "users"."username", "users"."avatar_color", "users"."country_code", "users"."qr_token", "users"."qr_token_expires_at", "users"."last_seen_time", "users"."last_seen_ip", "users"."qon_id", "users"."stripe_customer_id", "users"."avatar", "users"."first_destroy_reminder_sent", "users"."second_destroy_reminder_sent", "users"."generated", "users"."new_architecture", "users"."state", "users"."idfa", "users"."aaid", "users"."about", "users"."funnel_fox_id", "users"."referral_code" FROM "users" WHERE "users"."id" = $1 LIMIT $2
Covered by index on (id)
Rows: 7914080
Row progression: 7914080, 1
Row estimates
- id (=): 1
Existing indexes
- id PRIMARY
- analytics_id
- country_code
- email varchar_pattern_ops
- id, timezone_offset
- lower((email)::text)
- qon_id
- reset_password_token WHERE reset_password_token IS NOT NULL
- stripe_customer_id
- uid, provider UNIQUE
- username UNIQUE
|
|
726 min
0.2%
|
0 ms
|
113,701,453
ankipro
|
SELECT "v2"."deck_settings"."id", "v2"."deck_settings"."algorithm_preset", "v2"."deck_settings"."deck_id", "v2"."deck_settings"."easy_interval_minutes", "v2"."deck_settings"."easy_bonus_percent", "v2"."deck_settings"."font_settings", "v2"."deck_settings"."graduated_interval_minutes", "v2"."deck_settings"."interval_modifier_percent", "v2"."deck_settings"."last_sync_at", "v2"."deck_settings"."library_sharing", "v2"."deck_settings"."new_cards_per_day", "v2"."deck_settings"."reverse_mode", "v2"."deck_settings"."offline_mode", "v2"."deck_settings"."sharing", "v2"."deck_settings"."steps_in_minutes", "v2"."deck_settings"."shuffle_mode", "v2"."deck_settings"."tts_autoplay", "v2"."deck_settings"."tts", "v2"."deck_settings"."tts_back_side_language", "v2"."deck_settings"."tts_front_side_language", "v2"."deck_settings"."user_id", "v2"."deck_settings"."created_at", "v2"."deck_settings"."updated_at", "v2"."deck_settings"."position", "v2"."deck_settings"."tts_whole_card_pronunciation", "v2"."deck_settings"."state", "v2"."deck_settings"."max_cards_per_day", "v2"."deck_settings"."card_preset_id", "v2"."deck_settings"."max_interval_minutes", "v2"."deck_settings"."tts_speed", "v2"."deck_settings"."tts_slower_replay", "v2"."deck_settings"."folder_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."deck_id" = $1 AND "v2"."deck_settings"."user_id" = $2
Covered by index on (deck_id)
Rows: 40316548
Row progression: 40316548, 1
Row estimates
- deck_id (=): 1
- user_id (=): 170
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id
- folder_id
- user_id
- user_id
|
|
702 min
0.2%
|
1 ms
|
42,794,296
ankipro
|
SELECT "v2"."card_progresses"."id", "v2"."card_progresses"."ease_factor", "v2"."card_progresses"."frozen", "v2"."card_progresses"."interval", "v2"."card_progresses"."learning_state", "v2"."card_progresses"."learning_steps_index", "v2"."card_progresses"."next_review_at", "v2"."card_progresses"."ordinal", "v2"."card_progresses"."raw_next_review_at", "v2"."card_progresses"."to_learn_in_current_sl_round", "v2"."card_progresses"."note_id", "v2"."card_progresses"."user_id", "v2"."card_progresses"."created_at", "v2"."card_progresses"."updated_at", "v2"."card_progresses"."fetch_priority", "v2"."card_progresses"."deck_id", "v2"."card_progresses"."undo_data" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."id" IN ($1, $2, $3, $4, $5, $6, $7) AND "v2"."card_progresses"."deck_id" = $8 AND "v2"."card_progresses"."frozen" = $9
Covered by index on (id)
Rows: 112754352
Row progression: 112754352, 1
Row estimates
- id (=): 1
- deck_id (=): 273
- frozen (=): 56377176
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
698 min
0.2%
|
56 ms
|
741,106
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16) OR ancestry LIKE $17 OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32) AND state NOT IN ($33,$34,$35) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $36 AND frozen = $37 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
677 min
0.2%
|
0 ms
|
136,453,157
ankipro
|
SELECT "v2"."deck_counters"."id", "v2"."deck_counters"."recalculate_at", "v2"."deck_counters"."deck_id" FROM "v2"."deck_counters" WHERE "v2"."deck_counters"."deck_id" = $1 AND "v2"."deck_counters"."user_id" = $2
Covered by index on (deck_id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- deck_id (=): 1
- user_id (=): 448
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
666 min
0.2%
|
60 ms
|
661,511
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17) OR ancestry LIKE $18 OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34) AND state NOT IN ($35,$36,$37) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $38 AND frozen = $39 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
658 min
0.2%
|
0 ms
|
114,685,170
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."deck_id" FROM "v2"."notes" WHERE "v2"."notes"."deck_id" = $1 AND "v2"."notes"."id" = $2 LIMIT $3
|
|
654 min
0.2%
|
77 ms
|
512,234
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.deck_id IN ($3) ORDER BY id ASC LIMIT $4 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $5 WHERE $6=$7 ORDER BY notes.id ASC LIMIT $8
|
|
632 min
0.2%
|
61 ms
|
620,724
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18) OR ancestry LIKE $19 OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34 OR ancestry LIKE $35 OR ancestry LIKE $36) AND state NOT IN ($37,$38,$39) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $40 AND frozen = $41 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
607 min
0.2%
|
6 ms
|
5,843,952
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4, $5, $6)
|
|
605 min
0.2%
|
1 ms
|
26,926,600
ankipro
|
SELECT "v2"."card_progresses"."id" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."deck_id" = $1 AND "v2"."card_progresses"."user_id" = $2 AND "v2"."card_progresses"."frozen" = $3 AND (v2.card_progresses.next_review_at <= $4 OR v2.card_progresses.next_review_at IS NULL) AND (v2.card_progresses.to_learn_in_current_sl_round = $5 OR v2.card_progresses.to_learn_in_current_sl_round IS NULL) AND (v2.card_progresses.id IN ($6,$7,$8)) ORDER BY CASE v2.card_progresses.learning_state WHEN $9 THEN $10 WHEN $11 THEN $12 ELSE $13 END ASC, CASE WHEN v2.card_progresses.fetch_priority = $14 THEN $15 ELSE $16 END, RANDOM() LIMIT $17
|
|
601 min
0.2%
|
1 ms
|
42,320,131
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."created_at", "v2"."notes"."updated_at", "v2"."notes"."library_note_id", "v2"."notes"."library_card_id", "v2"."notes"."anki_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."id" IN ($1, $2, $3, $4, $5, $6, $7) AND "v2"."notes"."deck_id" = $8
|
|
592 min
0.2%
|
1 ms
|
26,970,699
ankipro
|
SELECT "v2"."card_progresses"."id" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."deck_id" = $1 AND "v2"."card_progresses"."user_id" = $2 AND "v2"."card_progresses"."frozen" = $3 AND (v2.card_progresses.next_review_at <= $4 OR v2.card_progresses.next_review_at IS NULL) AND (v2.card_progresses.to_learn_in_current_sl_round = $5 OR v2.card_progresses.to_learn_in_current_sl_round IS NULL) AND (learning_state IN ($6,$7,$8)) AND (v2.card_progresses.id NOT IN ($9,$10,$11)) ORDER BY CASE v2.card_progresses.learning_state WHEN $12 THEN $13 WHEN $14 THEN $15 ELSE $16 END ASC, CASE WHEN v2.card_progresses.fetch_priority = $17 THEN $18 ELSE $19 END, RANDOM() LIMIT $20
|
|
586 min
0.2%
|
6 ms
|
6,194,157
ankipro
|
SELECT "v2"."note_attachments"."id", "v2"."note_attachments"."note_id", "v2"."note_attachments"."deck_id", "v2"."note_attachments"."attachment_id", "v2"."note_attachments"."kind", "v2"."note_attachments"."created_at", "v2"."note_attachments"."updated_at", "v2"."note_attachments"."field_name" FROM "v2"."note_attachments" WHERE "v2"."note_attachments"."note_id" IN ($1, $2, $3, $4)
|
|
576 min
0.2%
|
1 ms
|
33,780,943
ankipro
|
SELECT COUNT(*) FROM "v2"."notes" WHERE "v2"."notes"."deck_id" = $1
|
|
566 min
0.2%
|
46 ms
|
735,046
ankipro
|
SELECT "v2"."notes"."id", "v2"."notes"."template_kind", "v2"."notes"."fields", "v2"."notes"."cards_count", "v2"."notes"."deck_id", "v2"."notes"."created_at", "v2"."notes"."updated_at", "v2"."notes"."library_note_id", "v2"."notes"."library_card_id", "v2"."notes"."anki_id", "v2"."notes"."css" FROM "v2"."notes" WHERE "v2"."notes"."deck_id" = $1 ORDER BY "v2"."notes"."id" ASC LIMIT $2
|
|
564 min
0.2%
|
65 ms
|
522,124
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20) OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34 OR ancestry LIKE $35 OR ancestry LIKE $36 OR ancestry LIKE $37 OR ancestry LIKE $38 OR ancestry LIKE $39 OR ancestry LIKE $40) AND state NOT IN ($41,$42,$43) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $44 AND frozen = $45 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
564 min
0.2%
|
0 ms
|
80,042,244
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."public_state" = $1 AND "v2"."decks"."id" = $2 LIMIT $3
|
|
554 min
0.2%
|
23 ms
|
1,452,272
ankipro
|
WITH cte AS ( SELECT id, deck_id, (sum(v2.notes.cards_count) over (order by v2.notes.id)) AS custom_offset FROM v2.notes WHERE $1=$2 AND v2.notes.id IN ($3,$4,$5,$6) ORDER BY id ASC LIMIT $7 ) SELECT * FROM v2.notes AS notes INNER JOIN cte AS c ON c.id = notes.id AND c.deck_id = notes.deck_id AND c.custom_offset > $8 WHERE $9=$10 ORDER BY notes.id ASC LIMIT $11
|
|
541 min
0.2%
|
2 ms
|
18,432,437
ankipro
|
SELECT "v2"."attachments"."id", "v2"."attachments"."media_kind", "v2"."attachments"."height", "v2"."attachments"."width", "v2"."attachments"."media_file", "v2"."attachments"."deck_id", "v2"."attachments"."created_at", "v2"."attachments"."updated_at", "v2"."attachments"."answer_mask", "v2"."attachments"."question_mask", "v2"."attachments"."source", "v2"."attachments"."custom_file_url" FROM "v2"."attachments" WHERE "v2"."attachments"."id" = $1
|
|
531 min
0.2%
|
0 ms
|
80,759,652
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."id" = $1 AND "v2"."decks"."ancestry" = $2
Covered by index on (id)
Rows: 40098216
Row progression: 40098216, 1
Row estimates
- id (=): 1
- ancestry (=): 32
Existing indexes
- id PRIMARY
- id, user_id PRIMARY
- ancestry
- ancestry text_pattern_ops
- ancestry varchar_pattern_ops
- anki_deck_id
- category_id
- cloned_from_id
- deck_import_id
- deleted_by_user_at, user_id
- id, state
- library_deck_id
- public_state, visibility
- sharing_token varchar_pattern_ops UNIQUE
- state
- user_id
- user_id
|
|
511 min
0.2%
|
62 ms
|
497,867
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19) OR ancestry LIKE $20 OR ancestry LIKE $21 OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34 OR ancestry LIKE $35 OR ancestry LIKE $36 OR ancestry LIKE $37 OR ancestry LIKE $38) AND state NOT IN ($39,$40,$41) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $42 AND frozen = $43 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
489 min
0.1%
|
5 ms
|
6,379,595
ankipro
|
SELECT $1 AS one FROM "v2"."decks" WHERE ("v2"."decks"."ancestry" LIKE $2 OR "v2"."decks"."id" = $3) AND "v2"."decks"."state" != $4 AND "v2"."decks"."state" IN ($5, $6, $7, $8) LIMIT $9
|
|
466 min
0.1%
|
0 ms
|
68,754,528
ankipro
|
SELECT "v2"."deck_settings"."id", "v2"."deck_settings"."algorithm_preset", "v2"."deck_settings"."deck_id", "v2"."deck_settings"."easy_interval_minutes", "v2"."deck_settings"."easy_bonus_percent", "v2"."deck_settings"."font_settings", "v2"."deck_settings"."graduated_interval_minutes", "v2"."deck_settings"."interval_modifier_percent", "v2"."deck_settings"."last_sync_at", "v2"."deck_settings"."library_sharing", "v2"."deck_settings"."new_cards_per_day", "v2"."deck_settings"."reverse_mode", "v2"."deck_settings"."offline_mode", "v2"."deck_settings"."sharing", "v2"."deck_settings"."steps_in_minutes", "v2"."deck_settings"."shuffle_mode", "v2"."deck_settings"."tts_autoplay", "v2"."deck_settings"."tts", "v2"."deck_settings"."tts_back_side_language", "v2"."deck_settings"."tts_front_side_language", "v2"."deck_settings"."user_id", "v2"."deck_settings"."created_at", "v2"."deck_settings"."updated_at", "v2"."deck_settings"."position", "v2"."deck_settings"."tts_whole_card_pronunciation", "v2"."deck_settings"."state", "v2"."deck_settings"."max_cards_per_day", "v2"."deck_settings"."card_preset_id", "v2"."deck_settings"."max_interval_minutes", "v2"."deck_settings"."tts_speed", "v2"."deck_settings"."tts_slower_replay", "v2"."deck_settings"."folder_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."deck_id" = $1 AND "v2"."deck_settings"."user_id" = $2 LIMIT $3
Covered by index on (deck_id)
Rows: 40316548
Row progression: 40316548, 1
Row estimates
- deck_id (=): 1
- user_id (=): 170
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id
- folder_id
- user_id
- user_id
|
|
466 min
0.1%
|
300 ms
|
93,324
ankipro
|
SELECT "v2"."decks"."id", "v2"."decks"."deck_collaborators_count", "v2"."decks"."deleted_by_user_at", "v2"."decks"."downvotes", "v2"."decks"."import_error_message", "v2"."decks"."name", "v2"."decks"."last_reset_at", "v2"."decks"."public_state", "v2"."decks"."sharing_token", "v2"."decks"."state", "v2"."decks"."visibility", "v2"."decks"."upvotes", "v2"."decks"."user_id", "v2"."decks"."created_at", "v2"."decks"."updated_at", "v2"."decks"."ancestry", "v2"."decks"."slug", "v2"."decks"."seo_description", "v2"."decks"."description", "v2"."decks"."category", "v2"."decks"."cloned_times_count", "v2"."decks"."is_indexable", "v2"."decks"."study_score", "v2"."decks"."library_deck_id", "v2"."decks"."file_hash", "v2"."decks"."cloned_from_id", "v2"."decks"."anki_deck_id", "v2"."decks"."studiers_count", "v2"."decks"."deck_id", "v2"."decks"."moved_at", "v2"."decks"."source", "v2"."decks"."reviews_count", "v2"."decks"."duplicated_from_id", "v2"."decks"."no_cards_limit", "v2"."decks"."category_id" FROM "v2"."decks" WHERE "v2"."decks"."public_state" = $1 AND "v2"."decks"."sharing_token" = $2 LIMIT $3
|
|
460 min
0.1%
|
0 ms
|
80,749,651
ankipro
|
SELECT "v2"."deck_counters"."id", "v2"."deck_counters"."deck_id", "v2"."deck_counters"."got_it_count", "v2"."deck_counters"."graduated_count", "v2"."deck_counters"."frozen_count", "v2"."deck_counters"."learning_count", "v2"."deck_counters"."new_count", "v2"."deck_counters"."presented_count", "v2"."deck_counters"."reviewed_today_count", "v2"."deck_counters"."recalculate_at", "v2"."deck_counters"."study_again_count", "v2"."deck_counters"."to_learn_today_count", "v2"."deck_counters"."to_review_count", "v2"."deck_counters"."total_new_count", "v2"."deck_counters"."user_id", "v2"."deck_counters"."created_at", "v2"."deck_counters"."updated_at", "v2"."deck_counters"."total_not_learned_count", "v2"."deck_counters"."offline_available_count", "v2"."deck_counters"."learning_total_count", "v2"."deck_counters"."graduated_total_count" FROM "v2"."deck_counters" WHERE "v2"."deck_counters"."deck_id" = $1 AND "v2"."deck_counters"."user_id" = $2
Covered by index on (deck_id)
Rows: 40247008
Row progression: 40247008, 1
Row estimates
- deck_id (=): 1
- user_id (=): 448
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, user_id UNIQUE
- user_id
- user_id
|
|
457 min
0.1%
|
3 ms
|
10,237,522
ankipro
|
SELECT "v2"."card_progresses"."id", "v2"."card_progresses"."ease_factor", "v2"."card_progresses"."frozen", "v2"."card_progresses"."interval", "v2"."card_progresses"."learning_state", "v2"."card_progresses"."learning_steps_index", "v2"."card_progresses"."next_review_at", "v2"."card_progresses"."ordinal", "v2"."card_progresses"."raw_next_review_at", "v2"."card_progresses"."to_learn_in_current_sl_round", "v2"."card_progresses"."note_id", "v2"."card_progresses"."user_id", "v2"."card_progresses"."created_at", "v2"."card_progresses"."updated_at", "v2"."card_progresses"."fetch_priority", "v2"."card_progresses"."deck_id", "v2"."card_progresses"."undo_data" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."note_id" = $1 AND "v2"."card_progresses"."ordinal" = $2 AND "v2"."card_progresses"."user_id" = $3
Covered by index on (note_id)
Rows: 112754352
Row progression: 112754352, 0
Row estimates
- note_id (=): 0
- user_id (=): 772
- ordinal (=): 112754352
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|
|
434 min
0.1%
|
1 ms
|
34,153,238
ankipro
|
SELECT "v2"."card_progresses"."id" FROM "v2"."card_progresses" WHERE "v2"."card_progresses"."deck_id" = $1 AND "v2"."card_progresses"."user_id" = $2 AND "v2"."card_progresses"."frozen" = $3 AND (v2.card_progresses.next_review_at <= $4 OR v2.card_progresses.next_review_at IS NULL) AND (v2.card_progresses.to_learn_in_current_sl_round = $5 OR v2.card_progresses.to_learn_in_current_sl_round IS NULL) AND (learning_state IN ($6,$7,$8)) ORDER BY CASE v2.card_progresses.learning_state WHEN $9 THEN $10 WHEN $11 THEN $12 ELSE $13 END ASC, CASE WHEN v2.card_progresses.fetch_priority = $14 THEN $15 ELSE $16 END, RANDOM() LIMIT $17
|
|
432 min
0.1%
|
63 ms
|
408,977
ankipro
|
SELECT DISTINCT "users"."id" AS alias_0, "users"."id" FROM "users" LEFT OUTER JOIN "subscriptions" ON "subscriptions"."user_id" = "users"."id" WHERE "subscriptions"."expires_at" < $1 AND "users"."id" > $2 ORDER BY "users"."id" ASC LIMIT $3
|
|
430 min
0.1%
|
61 ms
|
424,952
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21) OR ancestry LIKE $22 OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34 OR ancestry LIKE $35 OR ancestry LIKE $36 OR ancestry LIKE $37 OR ancestry LIKE $38 OR ancestry LIKE $39 OR ancestry LIKE $40 OR ancestry LIKE $41 OR ancestry LIKE $42) AND state NOT IN ($43,$44,$45) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $46 AND frozen = $47 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
414 min
0.1%
|
1 ms
|
26,216,876
ankipro
|
SELECT "v2"."decks"."id" AS t0_r0, "v2"."decks"."deck_collaborators_count" AS t0_r1, "v2"."decks"."deleted_by_user_at" AS t0_r2, "v2"."decks"."downvotes" AS t0_r3, "v2"."decks"."import_error_message" AS t0_r4, "v2"."decks"."name" AS t0_r5, "v2"."decks"."last_reset_at" AS t0_r6, "v2"."decks"."public_state" AS t0_r7, "v2"."decks"."sharing_token" AS t0_r8, "v2"."decks"."state" AS t0_r9, "v2"."decks"."visibility" AS t0_r10, "v2"."decks"."upvotes" AS t0_r11, "v2"."decks"."user_id" AS t0_r12, "v2"."decks"."created_at" AS t0_r13, "v2"."decks"."updated_at" AS t0_r14, "v2"."decks"."ancestry" AS t0_r15, "v2"."decks"."slug" AS t0_r16, "v2"."decks"."seo_description" AS t0_r17, "v2"."decks"."description" AS t0_r18, "v2"."decks"."category" AS t0_r19, "v2"."decks"."cloned_times_count" AS t0_r20, "v2"."decks"."is_indexable" AS t0_r21, "v2"."decks"."study_score" AS t0_r22, "v2"."decks"."library_deck_id" AS t0_r23, "v2"."decks"."file_hash" AS t0_r24, "v2"."decks"."cloned_from_id" AS t0_r25, "v2"."decks"."anki_deck_id" AS t0_r26, "v2"."decks"."studiers_count" AS t0_r27, "v2"."decks"."deck_id" AS t0_r28, "v2"."decks"."moved_at" AS t0_r29, "v2"."decks"."source" AS t0_r30, "v2"."decks"."reviews_count" AS t0_r31, "v2"."decks"."duplicated_from_id" AS t0_r32, "v2"."decks"."no_cards_limit" AS t0_r33, "v2"."decks"."category_id" AS t0_r34, "v2"."deck_settings"."id" AS t1_r0, "v2"."deck_settings"."algorithm_preset" AS t1_r1, "v2"."deck_settings"."deck_id" AS t1_r2, "v2"."deck_settings"."easy_interval_minutes" AS t1_r3, "v2"."deck_settings"."easy_bonus_percent" AS t1_r4, "v2"."deck_settings"."font_settings" AS t1_r5, "v2"."deck_settings"."graduated_interval_minutes" AS t1_r6, "v2"."deck_settings"."interval_modifier_percent" AS t1_r7, "v2"."deck_settings"."last_sync_at" AS t1_r8, "v2"."deck_settings"."library_sharing" AS t1_r9, "v2"."deck_settings"."new_cards_per_day" AS t1_r10, "v2"."deck_settings"."reverse_mode" AS t1_r11, "v2"."deck_settings"."offline_mode" AS t1_r12, "v2"."deck_settings"."sharing" AS t1_r13, "v2"."deck_settings"."steps_in_minutes" AS t1_r14, "v2"."deck_settings"."shuffle_mode" AS t1_r15, "v2"."deck_settings"."tts_autoplay" AS t1_r16, "v2"."deck_settings"."tts" AS t1_r17, "v2"."deck_settings"."tts_back_side_language" AS t1_r18, "v2"."deck_settings"."tts_front_side_language" AS t1_r19, "v2"."deck_settings"."user_id" AS t1_r20, "v2"."deck_settings"."created_at" AS t1_r21, "v2"."deck_settings"."updated_at" AS t1_r22, "v2"."deck_settings"."position" AS t1_r23, "v2"."deck_settings"."tts_whole_card_pronunciation" AS t1_r24, "v2"."deck_settings"."state" AS t1_r25, "v2"."deck_settings"."max_cards_per_day" AS t1_r26, "v2"."deck_settings"."card_preset_id" AS t1_r27, "v2"."deck_settings"."max_interval_minutes" AS t1_r28, "v2"."deck_settings"."tts_speed" AS t1_r29, "v2"."deck_settings"."tts_slower_replay" AS t1_r30, "v2"."deck_settings"."folder_id" AS t1_r31, "v2"."deck_counters"."id" AS t2_r0, "v2"."deck_counters"."deck_id" AS t2_r1, "v2"."deck_counters"."got_it_count" AS t2_r2, "v2"."deck_counters"."graduated_count" AS t2_r3, "v2"."deck_counters"."frozen_count" AS t2_r4, "v2"."deck_counters"."learning_count" AS t2_r5, "v2"."deck_counters"."new_count" AS t2_r6, "v2"."deck_counters"."presented_count" AS t2_r7, "v2"."deck_counters"."reviewed_today_count" AS t2_r8, "v2"."deck_counters"."recalculate_at" AS t2_r9, "v2"."deck_counters"."study_again_count" AS t2_r10, "v2"."deck_counters"."to_learn_today_count" AS t2_r11, "v2"."deck_counters"."to_review_count" AS t2_r12, "v2"."deck_counters"."total_new_count" AS t2_r13, "v2"."deck_counters"."user_id" AS t2_r14, "v2"."deck_counters"."created_at" AS t2_r15, "v2"."deck_counters"."updated_at" AS t2_r16, "v2"."deck_counters"."total_not_learned_count" AS t2_r17, "v2"."deck_counters"."offline_available_count" AS t2_r18, "v2"."deck_counters"."learning_total_count" AS t2_r19, "v2"."deck_counters"."graduated_total_count" AS t2_r20 FROM "v2"."decks" INNER JOIN "v2"."deck_settings" ON "v2"."deck_settings"."deck_id" = "v2"."decks"."id" INNER JOIN "v2"."deck_counters" ON "v2"."deck_counters"."deck_id" = "v2"."decks"."id" WHERE "v2"."decks"."id" IN ($1) AND (v2.deck_settings.user_id = $2 AND v2.deck_counters.user_id = $3) ORDER BY "v2"."decks"."ancestry" ASC
|
|
410 min
0.1%
|
66 ms
|
372,030
ankipro
|
WITH subtree_decks AS ( SELECT id, ancestry FROM v2.decks WHERE (id IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22) OR ancestry LIKE $23 OR ancestry LIKE $24 OR ancestry LIKE $25 OR ancestry LIKE $26 OR ancestry LIKE $27 OR ancestry LIKE $28 OR ancestry LIKE $29 OR ancestry LIKE $30 OR ancestry LIKE $31 OR ancestry LIKE $32 OR ancestry LIKE $33 OR ancestry LIKE $34 OR ancestry LIKE $35 OR ancestry LIKE $36 OR ancestry LIKE $37 OR ancestry LIKE $38 OR ancestry LIKE $39 OR ancestry LIKE $40 OR ancestry LIKE $41 OR ancestry LIKE $42 OR ancestry LIKE $43 OR ancestry LIKE $44) AND state NOT IN ($45,$46,$47) ), min_next_reviews AS ( SELECT deck_id, MIN(next_review_at) AS min_next_review_at FROM v2.card_progresses WHERE deck_id IN (SELECT id FROM subtree_decks) AND user_id = $48 AND frozen = $49 GROUP BY deck_id ) SELECT sd.id AS deck_id, sd.ancestry, mn.min_next_review_at FROM subtree_decks sd LEFT JOIN min_next_reviews mn ON sd.id = mn.deck_id
|
|
409 min
0.1%
|
2 ms
|
12,824,643
ankipro
|
SELECT "v2"."deck_settings"."deck_id" FROM "v2"."deck_settings" WHERE "v2"."deck_settings"."user_id" = $1 AND "v2"."deck_settings"."folder_id" = $2
|
|
397 min
0.1%
|
2 ms
|
11,623,360
ankipro
|
SELECT COUNT(id) AS total, SUM(CASE WHEN NOT frozen AND learning_state = $1 THEN $2 ELSE $3 END) AS new, SUM(CASE WHEN NOT frozen AND learning_state = $4 AND next_review_at < $5 THEN $6 ELSE $7 END) AS learning, SUM(CASE WHEN NOT frozen AND learning_state = $8 AND next_review_at < $9 THEN $10 ELSE $11 END) AS graduated, SUM(CASE WHEN NOT frozen AND learning_state = $12 THEN $13 ELSE $14 END) AS learning_total, SUM(CASE WHEN NOT frozen AND learning_state = $15 THEN $16 ELSE $17 END) AS graduated_total, SUM(CASE WHEN NOT frozen AND learning_state = $18 THEN $19 ELSE $20 END) AS study_again, SUM(CASE WHEN NOT frozen AND learning_state = $21 THEN $22 ELSE $23 END) AS got_it, SUM(CASE WHEN frozen THEN $24 ELSE $25 END) as frozen, SUM(CASE WHEN NOT frozen AND learning_state IN($26, $27, $28) AND next_review_at < $29 THEN $30 ELSE $31 END) as offline_available, MIN(CASE WHEN NOT frozen AND next_review_at > $32 THEN next_review_at ELSE $33 END) as recalculate_at FROM v2.card_progresses WHERE user_id = $34 AND deck_id IN ($35,$36)
Covered by index on (deck_id, user_id, note_id)
Rows: 112754352
Row progression: 112754352, 273, 0
Row estimates
- deck_id (=): 273
- user_id (=): 772
Existing indexes
- id PRIMARY
- id, deck_id PRIMARY
- deck_id
- deck_id, id
- deck_id, user_id, note_id
- library_card_id
- library_note_id
- note_id
- user_id
- user_id, frozen
- user_id, id
- user_id, note_id
|