PennyDreadfulMTG / perf-reports

2 stars 7 forks source link

Exceeded slow_query limit (2.4 > 1.0) in mysql: ``` #63122

Open vorpal-buildbot opened 1 month ago

vorpal-buildbot commented 1 month ago
    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Taurean Mauler', 'Raging Ravine', 'Azusa''s Many Journeys', 'Forbid', 'Ruric Thar, the Unbowed', 'Riveteers Overlook', 'Radagast the Brown', 'Cenote Scout', 'Bolas''s Citadel', 'Kami of Transience', 'Soul Enervation', 'Kefnet the Mindful', 'Spring-Loaded Sawblades', 'Crucible of Worlds', 'Siege Rhino', 'Circuit Mender', 'Hardened Scales', 'Avacyn''s Pilgrim', 'Dire Fleet Daredevil', 'Restoration Angel', 'Sheltered Thicket', 'Knight of Autumn', 'No More Lies', 'Michiko''s Reign of Truth', 'Madcap Experiment', 'Hour of Devastation', 'Hall of Heliod''s Generosity', 'Helm of the Gods', 'Phantom Interference', 'Eldrazi Displacer', 'Restless Vinestalk', 'Wooded Bastion', 'Soulfire Grand Master', 'Brushland', 'Cabaretti Courtyard', 'Call of the Death-Dweller', 'Clifftop Retreat', 'Vindicate', 'The Celestus', 'Arc Trail', 'Escape Tunnel', 'Kor Spiritdancer', 'Brass''s Tunnel-Grinder', 'Servant of the Scale', 'Burst Lightning', 'Heliod''s Pilgrim', 'Spell Pierce', 'Dockside Chef', 'Spirited Companion', 'Azusa, Lost but Seeking', 'Warriors'' Lesson', 'Sentinel''s Mark', 'Trash the Town', 'Words of Wind', 'Novice Inspector', 'Yorion, Sky Nomad', 'Throne of the Grim Captain', 'Llanowar Wastes', 'Fire-Lit Thicket', 'Fortified Village', 'Temple of Malady', 'Cinder Glade', 'Sylvan Scrying', 'Sylvan Library', 'Hall', 'Flooded Grove', 'Jadelight Ranger', 'Silhana Ledgewalker', 'Nissa, Voice of Zendikar', 'Mystifying Maze', 'Temple of Plenty', 'Tendo Ice Bridge', 'Seismic Assault', 'Hour of Promise', 'Cathedral of War', 'Maelstrom Pulse', 'Into the Fire', 'Etali, Primal Conqueror', 'Path to Exile', 'Glint-Horn Buccaneer', 'Sphinx''s Revelation', 'Setessan Training', 'Weaver of Harmony', 'Grand Coliseum', 'Sunpetal Grove', 'Tymaret, Chosen from Death', 'Wrath of God', 'Disfigure', 'Deduce', 'Avatar of the Resolute', 'Temple of Mystery', 'Terminus', 'Jadelight Spelunker', 'Grakmaw, Skyclave Ravager', 'Aphemia, the Cacophony', 'Volatile Fault', 'Heartflame Duelist', 'Guardian of Ghirapur', 'Webweaver Changeling', 'Dreg Mangler', 'Teachings of the Kirin', 'Valakut Awakening', 'Scattered Groves', 'Glimmervoid', 'Conservatory', 'Cartouche of Solidarity', 'Cease // Desist', 'Carapace', 'Silence', 'Gloomshrieker', 'The Eternal Wanderer', 'Insidious Roots', 'Cruel Sadist', 'Brain Maggot', 'Incinerate', 'Collective Defiance', 'Brokers Hideout', 'Clay-Fired Bricks', 'Monument to Perfection', 'Swarm Shambler', 'Polukranos, Unchained', 'Out of Time', 'Unflinching Courage', 'Woodland Cemetery', 'Damn', 'Insolent Neonate', 'Cloudpost', 'Risk Factor', 'Prophetic Prism', 'Benevolent Bodyguard', 'Kaya, Ghost Assassin', 'Tymaret Calls the Dead', 'The World Tree', 'Generous Patron', 'Deadeye Tracker', 'Lumbering Falls', 'Squire''s Devotion', 'Seaside Citadel', 'Search for Azcanta', 'Thragtusk', 'Abrupt Decay', 'Courser of Kruphix', 'Eidolon of Blossoms', 'Obscura Storefront', 'Nurturing Pixie', 'Lightning Helix', 'Growth-Chamber Guardian', 'Field of the Dead', 'Kaslem''s Stonetree', 'Abrade', 'Rugged Prairie', 'Touch the Spirit Realm', 'Skullbriar, the Walking Grave', 'Yavimaya Coast', 'Mortal Obstinacy', 'Hinterland Harbor', 'Price of Progress'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.4, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.8 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Vivid Marsh', 'Dockside Chef', 'Silhana Ledgewalker', 'Helm of the Gods', 'Servant of the Scale', 'Avatar of the Resolute', 'Rampaging Baloths', 'Grave Titan', 'Brain Maggot', 'Out of Time', 'Taurean Mauler', 'Brushland', 'Commune with the Gods', 'Hogaak, Arisen Necropolis', 'Tranquil Thicket', 'Nissa, Voice of Zendikar', 'Sheltered Thicket', 'Jadelight Spelunker', 'Dread Return', 'Prophetic Prism', 'The Eternal Wanderer', 'Unflinching Courage', 'Cease // Desist', 'Wrath of God', 'Aphemia, the Cacophony', 'Abrupt Decay', 'Azusa''s Many Journeys', 'Nurturing Pixie', 'Swarm Shambler', 'Eldrazi Displacer', 'Hardened Scales', 'Kaya, Ghost Assassin', 'Warriors'' Lesson', 'Shriekhorn', 'Polukranos, Unchained', 'Disfigure', 'Obscura Storefront', 'Carapace', 'Spring-Loaded Sawblades', 'Soul Enervation', 'Damn', 'Hissing Quagmire', 'Argoth, Sanctum of Nature', 'Guardian of Ghirapur', 'Tymaret, Chosen from Death', 'Sentinel''s Mark', 'Escape Tunnel', 'Sylvan Scrying', 'Forbid', 'Gilt-Leaf Palace', 'Insidious Roots', 'Deduce', 'Courser of Kruphix', 'Cloudpost', 'Grakmaw, Skyclave Ravager', 'Golgari Grave-Troll', 'Kami of Transience', 'Touch the Spirit Realm', 'Incinerate', 'Glint-Horn Buccaneer', 'Spirited Companion', 'Kor Spiritdancer', 'Scattered Groves', 'Silence', 'Fortified Village', 'Michiko''s Reign of Truth', 'Maelstrom Pulse', 'Monument to Perfection', 'Woodland Cemetery', 'Benevolent Bodyguard', 'Hall of Heliod''s Generosity', 'Okina, Temple to the Grandfathers', 'Yorion, Sky Nomad', 'The Celestus', 'Tymaret Calls the Dead', 'Fire-Lit Thicket', 'Deadeye Tracker', 'Sphinx''s Revelation', 'Dire Fleet Daredevil', 'Setessan Training', 'Teachings of the Kirin', 'Squire''s Devotion', 'Skullbriar, the Walking Grave', 'Mystifying Maze', 'Volatile Fault', 'Collective Defiance', 'Rubblebelt Maverick', 'Vindicate', 'Kefnet the Mindful', 'Words of Wind', 'Etali, Primal Conqueror', 'Hour of Promise', 'Lumbering Falls', 'Raging Ravine', 'Weaver of Harmony', 'Generous Patron', 'Wooded Bastion', 'Field of the Dead', 'Temple of Mystery', 'Sylvan Library', 'Azusa, Lost but Seeking', 'Brokers Hideout', 'Webweaver Changeling', 'Cathedral of War', 'Conservatory', 'Heliod''s Pilgrim', 'Thragtusk', 'Path to Exile', 'Mortal Obstinacy', 'Crawling Barrens', 'Llanowar Wastes', 'Brass''s Tunnel-Grinder', 'Clay-Fired Bricks', 'Siege Rhino', 'Spell Pierce', 'Aftermath Analyst', 'Necroblossom Snarl', 'Search for Azcanta', 'Insolent Neonate', 'Cabaretti Courtyard', 'Jadelight Ranger', 'Terminus', 'Circuit Mender', 'Novice Inspector', 'Restoration Angel', 'Riveteers Overlook', 'Phantom Interference', 'Seaside Citadel', 'Ruric Thar, the Unbowed', 'Cartouche of Solidarity', 'Restless Vinestalk', 'Gloomshrieker', 'Flooded Grove', 'Tendo Ice Bridge', 'Kaslem''s Stonetree', 'Sunpetal Grove', 'Cruel Sadist', 'Eidolon of Blossoms', 'Temple of Plenty', 'Throne of the Grim Captain', 'Avacyn''s Pilgrim', 'Cenote Scout', 'Growth-Chamber Guardian', 'Call of the Death-Dweller', 'Lotleth Troll', 'Hinterland Harbor', 'Dreg Mangler', 'Grand Coliseum', 'Yavimaya Coast', 'The World Tree', 'No More Lies', 'Seismic Assault', 'Temple of Malady', 'Crucible of Worlds', 'Glimmervoid', 'Trash the Town', 'Cinder Glade', 'Putrid Imp', 'Knight of Autumn', 'Radagast the Brown'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.8, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (13.8 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Teachings of the Kirin', 'Vedalken Shackles', 'Plow Under', 'Ruric Thar, the Unbowed', 'Windborn Muse', 'Unsummon', 'The Eternal Wanderer', 'Heliod''s Pilgrim', 'Growth-Chamber Guardian', 'Spell Pierce', 'Cruel Sadist', 'Volatile Fault', 'Sunpetal Grove', 'Hour of Promise', 'Spring-Loaded Sawblades', 'Taurean Mauler', 'Phantom Interference', 'Cease // Desist', 'Brain Maggot', 'Collective Defiance', 'Out of Time', 'Scattered Groves', 'Disfigure', 'Stoic Sphinx', 'Gloomshrieker', 'Restless Vinestalk', 'Search for Azcanta', 'Castle Vantress', 'Forbid', 'Servant of the Scale', 'Soul Enervation', 'Brass''s Tunnel-Grinder', 'Mystifying Maze', 'Maelstrom Pulse', 'Tendo Ice Bridge', 'Seismic Assault', 'Avatar of the Resolute', 'Kaya, Ghost Assassin', 'Fire-Lit Thicket', 'Hinterland Harbor', 'Flooded Grove', 'Damn', 'Throne of the Grim Captain', 'Wooded Bastion', 'Cartouche of Solidarity', 'Brushland', 'Touch the Spirit Realm', 'Hardened Scales', 'Prohibit', 'Avacyn''s Pilgrim', 'Etali, Primal Conqueror', 'Cabaretti Courtyard', 'Novice Inspector', 'Syncopate', 'Silhana Ledgewalker', 'Tymaret, Chosen from Death', 'Generous Patron', 'Wrath of God', 'Carapace', 'Thragtusk', 'Insidious Roots', 'Squire''s Devotion', 'Cinder Glade', 'Glimmervoid', 'Deathrite Shaman', 'Silence', 'Sylvan Scrying', 'Nurturing Pixie', 'Llanowar Wastes', 'Out of Air', 'Lumbering Falls', 'Eidolon of Blossoms', 'Hokori, Dust Drinker', 'Sentinel''s Mark', 'Obscura Storefront', 'Spirited Companion', 'Call of the Death-Dweller', 'Crucible of Worlds', 'Luminarch Aspirant', 'Restoration Angel', 'Kami of Transience', 'No More Lies', 'Radagast the Brown', 'Path to Exile', 'Raging Ravine', 'Yavimaya Coast', 'Settle the Wreckage', 'Garruk Wildspeaker', 'Yorion, Sky Nomad', 'Vindicate', 'Guardian of Ghirapur', 'The World Tree', 'Skullbriar, the Walking Grave', 'Weaver of Harmony', 'Woodland Cemetery', 'Jadelight Spelunker', 'Benevolent Bodyguard', 'Deduce', 'Field of the Dead', 'Birds of Paradise', 'Michiko''s Reign of Truth', 'Grakmaw, Skyclave Ravager', 'Canopy Vista', 'Sheltered Thicket', 'Kaslem''s Stonetree', 'Courser of Kruphix', 'Cathedral of War', 'Glint-Horn Buccaneer', 'Fortified Village', 'Hall of Heliod''s Generosity', 'Aphemia, the Cacophony', 'Conservatory', 'Academy Loremaster', 'Unflinching Courage', 'Sylvan Library', 'Grand Coliseum', 'Dockside Chef', 'Monument to Perfection', 'Azusa''s Many Journeys', 'Horned Loch-Whale', 'Insolent Neonate', 'Warriors'' Lesson', 'Azusa, Lost but Seeking', 'Prophetic Prism', 'Kor Spiritdancer', 'Polukranos, Unchained', 'Clay-Fired Bricks', 'Terminus', 'Helm of the Gods', 'Dreg Mangler', 'Brokers Hideout', 'Temple of Mystery', 'Kefnet the Mindful', 'Declaration in Stone', 'Abrupt Decay', 'Nissa, Voice of Zendikar', 'Sphinx''s Revelation', 'Knight of Autumn', 'Circuit Mender', 'Temple of Plenty', 'Webweaver Changeling', 'Seaside Citadel', 'Setessan Training', 'Kudzu', 'The Celestus', 'Riveteers Overlook', 'Words of Wind', 'Primal Command', 'Swarm Shambler', 'Deadeye Tracker', 'Cenote Scout', 'Temple of Malady', 'Siege Rhino', 'Trash the Town', 'Cosmos Elixir', 'Cloudpost', 'Haughty Djinn', 'Scavenger Grounds', 'Jadelight Ranger', 'Escape Tunnel', 'Dire Fleet Daredevil', 'Eldrazi Displacer', 'Mortal Obstinacy', 'Incinerate', 'Tymaret Calls the Dead'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 13.8, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.1 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Setessan Training', 'Mystifying Maze', 'Etali, Primal Conqueror', 'Tymaret, Chosen from Death', 'Caves of Koilos', 'Dig Through Time', 'Sunpetal Grove', 'Eidolon of Blossoms', 'Hour of Promise', 'Cloudpost', 'Squire''s Devotion', 'Maelstrom Pulse', 'Windborn Muse', 'Skysovereign, Consul Flagship', 'River of Tears', 'Luminarch Aspirant', 'Insidious Roots', 'Nissa, Voice of Zendikar', 'Siege Rhino', 'Cinder Glade', 'Yavimaya Coast', 'Bitter Triumph', 'Avacyn''s Pilgrim', 'Conservatory', 'Scattered Groves', 'Abrupt Decay', 'Seismic Assault', 'Raffine''s Guidance', 'Gloomshrieker', 'Greasefang, Okiba Boss', 'Kor Spiritdancer', 'Deathrite Shaman', 'The Eternal Wanderer', 'Sylvan Library', 'Pippin, Guard of the Citadel', 'Parhelion II', 'Tainted Indulgence', 'Swarm Shambler', 'Deadeye Tracker', 'Michiko''s Reign of Truth', 'Words of Wind', 'Favored Hoplite', 'Touch the Spirit Realm', 'Primal Command', 'Giant Adephage', 'Grand Coliseum', 'Thalia, Guardian of Thraben', 'Fortified Beachhead', 'Trash the Town', 'Honor of the Pure', 'Call of the Death-Dweller', 'Isamaru, Hound of Konda', 'Wrath of God', 'Unexpected Results', 'Deduce', 'Brokers Hideout', 'Defiant Strike', 'Pathrazer of Ulamog', 'Tendo Ice Bridge', 'Seaside Citadel', 'Vesuvan Drifter', 'Glimmervoid', 'Master of Death', 'Azusa''s Many Journeys', 'Ordeal of Thassa', 'Heliod''s Pilgrim', 'Vivid Marsh', 'The World Tree', 'Skullbriar, the Walking Grave', 'Out of Time', 'Obscura Storefront', 'Temple of Mystery', 'Cartouche of Knowledge', 'Dreg Mangler', 'Lumbering Falls', 'Cabaretti Courtyard', 'Cruel Sadist', 'Garruk Wildspeaker', 'Forbid', 'Ruric Thar, the Unbowed', 'Cease // Desist', 'Wooded Bastion', 'Volatile Fault', 'Cosmos Elixir', 'Castle Vantress', 'Aphemia, the Cacophony', 'Avatar of the Resolute', 'Fire-Lit Thicket', 'Path to Exile', 'Cartouche of Solidarity', 'Sheltered Thicket', 'Hero of Iroas', 'Servant of the Scale', 'Insolent Neonate', 'Raffine''s Informant', 'Battlewise Hoplite', 'Kudzu', 'Canopy Vista', 'No More Lies', 'Growth-Chamber Guardian', 'Hokori, Dust Drinker', 'Carapace', 'Prophetic Prism', 'Radagast the Brown', 'Courser of Kruphix', 'Nadaar, Selfless Paladin', 'Jadelight Ranger', 'Grakmaw, Skyclave Ravager', 'Guardian of Ghirapur', 'Raging Ravine', 'Eel Umbra', 'Slip Out the Back', 'Jadelight Spelunker', 'Spirited Companion', 'Cathedral of War', 'Tymaret Calls the Dead', 'Sylvan Scrying', 'Weaver of Harmony', 'Silence', 'Sentinel''s Mark', 'Flowering of the White Tree', 'Crucible of Worlds', 'Kaslem''s Stonetree', 'Settle the Wreckage', 'Riveteers Overlook', 'Temple of Malady', 'Fortified Village', 'Phantom Interference', 'Glacial Fortress', 'Damn', 'Woodland Cemetery', 'Yorion, Sky Nomad', 'Taurean Mauler', 'Kefnet the Mindful', 'Polukranos, Unchained', 'Minas Tirith', 'Cenote Scout', 'Collective Defiance', 'Clay-Fired Bricks', 'Brushland', 'It That Betrays', 'Eldrazi Displacer', 'Hall of Heliod''s Generosity', 'Nurturing Pixie', 'Glint-Horn Buccaneer', 'Eiganjo Castle', 'Circuit Mender', 'Search for Azcanta', 'Llanowar Wastes', 'Thragtusk', 'Knight of Autumn', 'Mortal Obstinacy', 'Tithe Taker', 'Plow Under', 'Vindicate', 'Throne of the Grim Captain', 'Teachings of the Kirin', 'Vivid Meadow', 'Soul Enervation', 'Spell Pierce', 'Dockside Chef', 'Helm of the Gods', 'Declaration in Stone', 'Restoration Angel', 'The Celestus', 'Spring-Loaded Sawblades', 'Warriors'' Lesson', 'Anafenza, Kin-Tree Spirit', 'Sphinx''s Revelation', 'Birds of Paradise', 'Benevolent Bodyguard', 'Thirst for Knowledge', 'Mwonvuli Beast Tracker', 'Silhana Ledgewalker', 'Hardened Scales', 'Terminus', 'Disfigure', 'Flooded Grove', 'Incinerate', 'Brass''s Tunnel-Grinder', 'Generous Patron', 'Temple of Plenty', 'Index', 'Escape Tunnel', 'Field of the Dead', 'Unflinching Courage', 'Brain Maggot', 'Monument to Perfection', 'Vryn Wingmare', 'Restless Vinestalk', 'Kami of Transience', 'Thalia, Heretic Cathar', 'Azusa, Lost but Seeking', 'Novice Inspector', 'Kaya, Ghost Assassin', 'Lively Dirge', 'Mystic Gate', 'Dire Fleet Daredevil', 'Webweaver Changeling', 'Hinterland Harbor'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.1, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (9.5 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Dread Wanderer', 'Balustrade Spy', 'Monument to Perfection', 'Plow Under', 'Dreadhorde Butcher', 'Chancellor of the Annex', 'Weaver of Harmony', 'Disfigure', 'Buried Treasure', 'Kor Spiritdancer', 'Dream Twist', 'Volatile Fault', 'Field of the Dead', 'Insolent Neonate', 'Glacial Fortress', 'Obscura Storefront', 'Cease // Desist', 'Bloodsoaked Champion', 'Squire''s Devotion', 'Kudzu', 'Sheltered Thicket', 'Tibalt''s Trickery', 'Brokers Hideout', 'Wrath of God', 'Kami of Transience', 'Growth-Chamber Guardian', 'Kazandu Blademaster', 'Hagra Mauling', 'Avacyn''s Pilgrim', 'Brass''s Tunnel-Grinder', 'Garruk Wildspeaker', 'Cloudpost', 'Hissing Quagmire', 'Teachings of the Kirin', 'Snarling Gorehound', 'Search for Azcanta', 'Damn', 'Ally Encampment', 'Hokori, Dust Drinker', 'Soul Enervation', 'Canopy Vista', 'Words of Wind', 'Mystifying Maze', 'Benevolent Bodyguard', 'Cathedral of War', 'Temple of Plenty', 'Call of the Death-Dweller', 'Glimmervoid', 'Incinerate', 'Touch the Spirit Realm', 'Mox Tantalite', 'Forsaken Miner', 'Scattered Groves', 'Flooded Grove', 'Birds of Paradise', 'Generous Patron', 'Etali, Primal Conqueror', 'Azusa''s Many Journeys', 'The World Tree', 'Hour of Promise', 'Sentinel''s Mark', 'Brushland', 'Chart a Course', 'Out of Time', 'Circuit Mender', 'Rubblebelt Maverick', 'Raging Ravine', 'Dire Fleet Daredevil', 'Silhana Ledgewalker', 'Seismic Assault', 'Taurean Mauler', 'Restless Vinestalk', 'Golgari Grave-Troll', 'Sphinx''s Revelation', 'Guardian of Ghirapur', 'Skullbriar, the Walking Grave', 'Forbid', 'Eldrazi Displacer', 'Cabaretti Courtyard', 'Throne of the Grim Captain', 'Declaration in Stone', 'Tymaret, Chosen from Death', 'Lurrus of the Dream-Den', 'Dockside Chef', 'Burning Vengeance', 'Hall of Heliod''s Generosity', 'Temple of Mystery', 'Kabira Evangel', 'Genesis', 'Phantasmal Image', 'Hardened Scales', 'Goblin Bombardment', 'Price of Progress', 'Woodland Cemetery', 'Sylvan Scrying', 'Grakmaw, Skyclave Ravager', 'Sunpetal Grove', 'Deep-Cavern Bat', 'Grand Coliseum', 'Brain Maggot', 'Prophetic Prism', 'Glint-Horn Buccaneer', 'Dreg Mangler', 'Eidolon of Blossoms', 'Ruric Thar, the Unbowed', 'Hogaak, Arisen Necropolis', 'Novice Inspector', 'Cenote Scout', 'Maelstrom Pulse', 'Judith, the Scourge Diva', 'Commune with the Gods', 'Mortal Obstinacy', 'Knight of Autumn', 'Abrupt Decay', 'Dread Return', 'Vadmir, New Blood', 'Webweaver Changeling', 'Bojuka Brigand', 'Kaslem''s Stonetree', 'Secluded Courtyard', 'Insidious Roots', 'Necroblossom Snarl', 'No More Lies', 'Aphemia, the Cacophony', 'Eye of Vecna', 'Riveteers Overlook', 'Lotleth Troll', 'Jadelight Spelunker', 'Ghoulsteed', 'Bitter Triumph', 'Temple of Malady', 'Deduce', 'Terminus', 'Ondu Inversion', 'Everflowing Chalice', 'Luminarch Aspirant', 'Akoum Battlesinger', 'Collective Defiance', 'Jadelight Ranger', 'Yavimaya Coast', 'Confounding Riddle', 'Foreboding Ruins', 'Warriors'' Lesson', 'Kefnet the Mindful', 'Avatar of the Resolute', 'Ondu Cleric', 'Fire-Lit Thicket', 'Vindicate', 'Dragonskull Summit', 'Azusa, Lost but Seeking', 'Cosmos Elixir', 'Undercity Informer', 'Kaya, Ghost Assassin', 'Phantom Interference', 'Laboratory Maniac', 'Michiko''s Reign of Truth', 'Polukranos, Unchained', 'Crucible of Worlds', 'Helm of the Gods', 'Gilt-Leaf Palace', 'Yorion, Sky Nomad', 'Nurturing Pixie', 'Dark Confidant', 'Azami, Lady of Scrolls', 'Spirited Companion', 'Graven Cairns', 'Shizo, Death''s Storehouse', 'Aftermath Analyst', 'Narcomoeba', 'The Celestus', 'Fortified Village', 'Tendo Ice Bridge', 'Pyromancer Ascension', 'Llanowar Wastes', 'Vraan, Executioner Thane', 'Kazandu Mammoth', 'Browbeat', 'Conservatory', 'Tormenting Voice', 'Settle the Wreckage', 'Deadeye Tracker', 'Courser of Kruphix', 'Path to Exile', 'Unflinching Courage', 'Zof Consumption', 'Escape Tunnel', 'Spell Pierce', 'Heliod''s Pilgrim', 'The Eternal Wanderer', 'Restoration Angel', 'Windborn Muse', 'Gloomshrieker', 'Spring-Loaded Sawblades', 'Lumbering Falls', 'Cruel Sadist', 'Swarm Shambler', 'Wooded Bastion', 'Hinterland Harbor', 'Radagast the Brown', 'Carapace', 'Cinder Glade', 'Battlefield Forge', 'Sphere of the Suns', 'Seaside Citadel', 'Trash the Town', 'Siege Rhino', 'Sylvan Library', 'Okina, Temple to the Grandfathers', 'Thragtusk', 'Servant of the Scale', 'Cartouche of Solidarity', 'Burst Lightning', 'Angel of Glory''s Rise', 'Nissa, Voice of Zendikar', 'Primal Command', 'Setessan Training', 'Harness the Storm', 'Silence', 'Valakut Awakening', 'Deathrite Shaman', 'Jwari Shapeshifter', 'Clay-Fired Bricks', 'Tymaret Calls the Dead'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 9.5, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.7 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Brain Maggot', 'Seaside Citadel', 'Yorion, Sky Nomad', 'Heliod''s Pilgrim', 'Restoration Angel', 'Deathrite Shaman', 'Greasefang, Okiba Boss', 'Cenote Scout', 'Aphemia, the Cacophony', 'Insidious Roots', 'Wooded Bastion', 'Terminus', 'Cartouche of Solidarity', 'Deadeye Tracker', 'Sunpetal Grove', 'Yavimaya Coast', 'Sylvan Scrying', 'Hinterland Harbor', 'Restless Vinestalk', 'Conservatory', 'Maelstrom Pulse', 'Glimmervoid', 'Hall of Heliod''s Generosity', 'Damn', 'Throne of the Grim Captain', 'Warriors'' Lesson', 'Cosmos Elixir', 'Obscura Storefront', 'Servant of the Scale', 'Benevolent Bodyguard', 'Primal Command', 'Declaration in Stone', 'Monument to Perfection', 'Parhelion II', 'Radagast the Brown', 'Abrupt Decay', 'Kor Spiritdancer', 'Eidolon of Blossoms', 'Trash the Town', 'Kami of Transience', 'Sorin, Vengeful Bloodlord', 'Circuit Mender', 'Avacyn''s Pilgrim', 'Collective Defiance', 'Kaslem''s Stonetree', 'Scattered Groves', 'Etali, Primal Conqueror', 'Corpse Churn', 'Silhana Ledgewalker', 'Kaya, Ghost Assassin', 'The World Tree', 'The Eternal Wanderer', 'Windborn Muse', 'Prophetic Prism', 'Setessan Training', 'Caves of Koilos', 'Temple of Mystery', 'Fire-Lit Thicket', 'Flooded Grove', 'Canopy Vista', 'Swarm Shambler', 'Crucible of Worlds', 'Garruk Wildspeaker', 'Nissa, Voice of Zendikar', 'Lively Dirge', 'Disfigure', 'Lumbering Falls', 'Volatile Fault', 'Deep-Cavern Bat', 'Guardian of Ghirapur', 'Cease // Desist', 'Touch the Spirit Realm', 'Fortified Village', 'Unflinching Courage', 'Call of the Death-Dweller', 'Ruric Thar, the Unbowed', 'Phantom Interference', 'Dire Fleet Daredevil', 'Teachings of the Kirin', 'Skysovereign, Consul Flagship', 'Carapace', 'The Celestus', 'Cathedral of War', 'No More Lies', 'Deduce', 'Hokori, Dust Drinker', 'Weaver of Harmony', 'Squire''s Devotion', 'Siege Rhino', 'Azusa, Lost but Seeking', 'Temple of Plenty', 'Insolent Neonate', 'Sentinel''s Mark', 'Skullbriar, the Walking Grave', 'Avatar of the Resolute', 'Forbid', 'Jadelight Spelunker', 'Cabaretti Courtyard', 'Azusa''s Many Journeys', 'Courser of Kruphix', 'Woodland Cemetery', 'Wrath of God', 'Temple of Malady', 'Grand Coliseum', 'Vindicate', 'Hour of Promise', 'Spell Pierce', 'Sylvan Library', 'Llanowar Wastes', 'Mortal Obstinacy', 'Novice Inspector', 'Dreg Mangler', 'Glint-Horn Buccaneer', 'Incinerate', 'Cruel Sadist', 'Cloudpost', 'Kudzu', 'Brass''s Tunnel-Grinder', 'Search for Azcanta', 'Webweaver Changeling', 'Escape Tunnel', 'Tymaret, Chosen from Death', 'Path to Exile', 'Shambling Vent', 'Jadelight Ranger', 'Gloomshrieker', 'Silence', 'Generous Patron', 'Michiko''s Reign of Truth', 'Riveteers Overlook', 'Mystifying Maze', 'Brushland', 'Clay-Fired Bricks', 'Raging Ravine', 'Cinder Glade', 'Grakmaw, Skyclave Ravager', 'Eldrazi Displacer', 'Sphinx''s Revelation', 'Settle the Wreckage', 'Luminarch Aspirant', 'Soul Enervation', 'Plow Under', 'Knight of Autumn', 'Nurturing Pixie', 'Isolated Chapel', 'Helm of the Gods', 'Hardened Scales', 'Spring-Loaded Sawblades', 'Brokers Hideout', 'Words of Wind', 'Dockside Chef', 'Tymaret Calls the Dead', 'Field of the Dead', 'Out of Time', 'Thragtusk', 'Growth-Chamber Guardian', 'Tendo Ice Bridge', 'Polukranos, Unchained', 'Raffine''s Informant', 'Spirited Companion', 'Kefnet the Mindful', 'Taurean Mauler', 'Bitter Triumph', 'Birds of Paradise', 'Seismic Assault', 'Sheltered Thicket'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.7, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.9 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Declaration in Stone', 'Wooded Bastion', 'Celestial Colonnade', 'Fire-Lit Thicket', 'Carapace', 'Woodland Cemetery', 'Kaslem''s Stonetree', 'Cartouche of Solidarity', 'Michiko''s Reign of Truth', 'Detention Sphere', 'Rubblebelt Maverick', 'Aftermath Analyst', 'Deduce', 'Lotleth Troll', 'Repeal', 'Azusa, Lost but Seeking', 'Courser of Kruphix', 'Sunpetal Grove', 'Out of Air', 'Kudzu', 'Temple of Silence', 'Forbid', 'Benevolent Bodyguard', 'Shizo, Death''s Storehouse', 'Mystic Gate', 'Gloomshrieker', 'Knight of Autumn', 'Flooded Grove', 'Lumbering Falls', 'Touch the Spirit Realm', 'Wrath of God', 'Soul Enervation', 'Raging Ravine', 'Plow Under', 'Yavimaya Coast', 'Nurturing Pixie', 'Collective Defiance', 'Path to Exile', 'Nissa, Voice of Zendikar', 'Servant of the Scale', 'Temple of Malady', 'Deadeye Tracker', 'Cinder Glade', 'Scattered Groves', 'Etali, Primal Conqueror', 'Dire Fleet Daredevil', 'Taurean Mauler', 'Sylvan Library', 'Squire''s Devotion', 'Guardian of Ghirapur', 'Trash the Town', 'Tymaret Calls the Dead', 'Clay-Fired Bricks', 'Dockside Chef', 'Words of Wind', 'Temple of Plenty', 'Damn', 'Hokori, Dust Drinker', 'Timeless Dragon', 'No More Lies', 'Dreg Mangler', 'Spirited Companion', 'Brokers Hideout', 'Conservatory', 'Commune with the Gods', 'Cruel Sadist', 'Ashiok, Nightmare Weaver', 'Mortal Obstinacy', 'Avatar of the Resolute', 'Hour of Promise', 'Volatile Fault', 'Brushland', 'Hissing Quagmire', 'Snarling Gorehound', 'Glint-Horn Buccaneer', 'Disfigure', 'Kefnet the Mindful', 'Search for Azcanta', 'Circuit Mender', 'Irrigated Farmland', 'Hogaak, Arisen Necropolis', 'Cenote Scout', 'Cathedral of War', 'Fortified Village', 'Bitter Triumph', 'Garruk Wildspeaker', 'Sentinel''s Mark', 'Warriors'' Lesson', 'Temple of Mystery', 'Horned Loch-Whale', 'Thief of Sanity', 'The Celestus', 'Thragtusk', 'Vindicate', 'Heliod''s Pilgrim', 'Canopy Vista', 'Incinerate', 'Unflinching Courage', 'Temple of Enlightenment', 'Okina, Temple to the Grandfathers', 'Llanowar Wastes', 'Spring-Loaded Sawblades', 'Polukranos, Unchained', 'Golgari Grave-Troll', 'Caves of Koilos', 'Cloudpost', 'Growth-Chamber Guardian', 'Riveteers Overlook', 'Radagast the Brown', 'Abrupt Decay', 'Skullbriar, the Walking Grave', 'Ballroom', 'Seaside Citadel', 'Jadelight Spelunker', 'Sphinx''s Revelation', 'Call of the Death-Dweller', 'Windborn Muse', 'Restoration Angel', 'Study', 'Tendo Ice Bridge', 'Gilt-Leaf Palace', 'Seismic Assault', 'Obscura Storefront', 'Hardened Scales', 'Insidious Roots', 'Settle the Wreckage', 'Terminus', 'Sheltered Thicket', 'Phantom Interference', 'Hall of Heliod''s Generosity', 'Glimmervoid', 'Birds of Paradise', 'Monument to Perfection', 'Setessan Training', 'Out of Time', 'Prophetic Prism', 'The World Tree', 'Yorion, Sky Nomad', 'Eidolon of Blossoms', 'Novice Inspector', 'Deathrite Shaman', 'Jadelight Ranger', 'Hinterland Harbor', 'The Raven''s Warning', 'Maelstrom Pulse', 'Silence', 'Kaya, Ghost Assassin', 'Throne of the Grim Captain', 'Generous Patron', 'Helm of the Gods', 'Grakmaw, Skyclave Ravager', 'Ruric Thar, the Unbowed', 'Eldrazi Displacer', 'The Eternal Wanderer', 'Luminarch Aspirant', 'Cease // Desist', 'Kor Spiritdancer', 'Cabaretti Courtyard', 'Mystifying Maze', 'Field of the Dead', 'Insolent Neonate', 'Brain Maggot', 'Temple of Deceit', 'Genesis', 'Restless Vinestalk', 'Secret Passage', 'Absorb', 'Crucible of Worlds', 'Primal Command', 'Spell Pierce', 'Brass''s Tunnel-Grinder', 'Aphemia, the Cacophony', 'Avacyn''s Pilgrim', 'Cosmos Elixir', 'Azusa''s Many Journeys', 'Siege Rhino', 'Sylvan Scrying', 'Necroblossom Snarl', 'Escape Tunnel', 'Silhana Ledgewalker', 'Dig Through Time', 'Grand Coliseum', 'Cave of the Frost Dragon', 'Webweaver Changeling', 'Obscura Charm', 'Glacial Fortress', 'Kami of Transience', 'Teachings of the Kirin', 'Tymaret, Chosen from Death', 'Weaver of Harmony', 'Swarm Shambler'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.9, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.9 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Burst Lightning', 'Spring-Loaded Sawblades', 'Conservatory', 'Prohibit', 'Cease // Desist', 'Sylvan Library', 'Riveteers Overlook', 'Sleight of Hand', 'Deathrite Shaman', 'Cathedral of War', 'Mystic Gate', 'Taurean Mauler', 'Yavimaya Coast', 'Deadeye Tracker', 'Angel of Glory''s Rise', 'Haughty Djinn', 'Ondu Inversion', 'Knight of Autumn', 'Ruric Thar, the Unbowed', 'Jadelight Ranger', 'Azusa''s Many Journeys', 'Mox Tantalite', 'Settle the Wreckage', 'Kami of Transience', 'Fire-Lit Thicket', 'Avacyn''s Pilgrim', 'Sylvan Scrying', 'Volatile Fault', 'Restless Spire', 'Trash the Town', 'Ash Zealot', 'Ghoulsteed', 'Earthshaker Khenra', 'Commune with Spirits', 'Lonely Sandbar', 'Benevolent Bodyguard', 'Heliod''s Pilgrim', 'Sphinx''s Revelation', 'Chancellor of the Annex', 'Enchantress''s Presence', 'Polukranos, Unchained', 'Verduran Enchantress', 'Glint-Horn Buccaneer', 'Throne of the Grim Captain', 'Narcomoeba', 'Growth-Chamber Guardian', 'Siege Rhino', 'Hidden Nursery', 'Hokori, Dust Drinker', 'Swarm Shambler', 'Buried Treasure', 'Frantic Scapegoat', 'Restoration Angel', 'Tymaret Calls the Dead', 'Escape Tunnel', 'Cloudpost', 'Celestial Colonnade', 'Price of Progress', 'Prophetic Prism', 'Azami, Lady of Scrolls', 'Radagast the Brown', 'Crucible of Worlds', 'Canopy Vista', 'Nissa, Voice of Zendikar', 'Shivan Reef', 'Sulfur Falls', 'Wrath of God', 'Carapace', 'Windborn Muse', 'The Celestus', 'Tymaret, Chosen from Death', 'Temple of Malady', 'Temple of Mystery', 'Declaration in Stone', 'Phantom Interference', 'Dread Return', 'Hagra Mauling', 'Fortified Village', 'Raging Ravine', 'Abrupt Decay', 'Primal Command', 'Nurturing Pixie', 'Unflinching Courage', 'Maelstrom Pulse', 'Courser of Kruphix', 'Stromkirk Noble', 'Kazandu Mammoth', 'Call of the Death-Dweller', 'Guardian of Ghirapur', 'Dire Fleet Daredevil', 'Luminarch Aspirant', 'Teachings of the Kirin', 'Search for Azcanta', 'Silence', 'Cartouche of Solidarity', 'Lumbering Falls', 'Skullbriar, the Walking Grave', 'Kaya, Ghost Assassin', 'Hall of Heliod''s Generosity', 'Wooded Bastion', 'Flooded Grove', 'Etali, Primal Conqueror', 'Brokers Hideout', 'Yorion, Sky Nomad', 'Damn', 'Zof Consumption', 'Kaslem''s Stonetree', 'Seaside Citadel', 'Brushland', 'Cabaretti Courtyard', 'Restless Vinestalk', 'Collective Defiance', 'Path to Exile', 'Grand Coliseum', 'Tendo Ice Bridge', 'Aphemia, the Cacophony', 'Temple of Plenty', 'Undercity Informer', 'Cenote Scout', 'Obscura Storefront', 'Cinder Glade', 'Thragtusk', 'Silhana Ledgewalker', 'Dreg Mangler', 'Brass''s Tunnel-Grinder', 'Setessan Training', 'Woodland Cemetery', 'Hinterland Harbor', 'Grakmaw, Skyclave Ravager', 'Hidden Cataract', 'Spirited Companion', 'Chart a Course', 'Helm of the Gods', 'Words of Wind', 'Birds of Paradise', 'Labyrinth of Skophos', 'Warriors'' Lesson', 'Terminus', 'Valakut Awakening', 'Michiko''s Reign of Truth', 'Kefnet the Mindful', 'Azusa, Lost but Seeking', 'Spelunking', 'Out of Time', 'Brain Maggot', 'Touch the Spirit Realm', 'Novice Inspector', 'Detention Sphere', 'Sheltered Thicket', 'Sentinel''s Mark', 'Runed Halo', 'Hidden Courtyard', 'Kumano Faces Kakkazan', 'Monument to Perfection', 'Circuit Mender', 'Hour of Promise', 'Balustrade Spy', 'Webweaver Changeling', 'Everflowing Chalice', 'Avatar of the Resolute', 'Clay-Fired Bricks', 'Deduce', 'Insidious Roots', 'Laboratory Maniac', 'Jadelight Spelunker', 'Weaver of Harmony', 'Spell Pierce', 'Soul Enervation', 'Scattered Groves', 'Mystifying Maze', 'The Eternal Wanderer', 'Sunpetal Grove', 'Cosmos Elixir', 'Generous Patron', 'Bedlam Reveler', 'Gloomshrieker', 'Vindicate', 'Eldrazi Displacer', 'Scavenger Grounds', 'Kudzu', 'Squire''s Devotion', 'Mortal Obstinacy', 'Forbid', 'Seismic Assault', 'Unauthorized Exit', 'Glimmervoid', 'Incinerate', 'Hardened Scales', 'Servant of the Scale', 'Phoenix of Ash', 'Kiora, the Crashing Wave', 'Pteramander', 'Eidolon of Blossoms', 'Shock', 'Dockside Chef', 'Disfigure', 'Azorius Guildgate', 'Sphere of the Suns', 'Kor Spiritdancer', 'Llanowar Wastes', 'Field of the Dead', 'Plow Under', 'Cruel Sadist', 'Garruk Wildspeaker', 'The World Tree', 'Barbarian Ring', 'Cunning Coyote', 'Insolent Neonate', 'No More Lies'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.9, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.9 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Cosmos Elixir', 'Terminus', 'Raging Ravine', 'Azusa, Lost but Seeking', 'Cruel Sadist', 'Obscura Storefront', 'Sunpetal Grove', 'Dig Through Time', 'Nurturing Pixie', 'Plow Under', 'Kami of Transience', 'Eidolon of Blossoms', 'Volatile Fault', 'Scattered Groves', 'Dreg Mangler', 'Tymaret, Chosen from Death', 'Carapace', 'Setessan Training', 'Glint-Horn Buccaneer', 'Vindicate', 'Thragtusk', 'Wooded Bastion', 'Call of the Death-Dweller', 'Woodland Cemetery', 'Tymaret Calls the Dead', 'Brokers Hideout', 'Hour of Promise', 'Michiko''s Reign of Truth', 'Day of Judgment', 'Teachings of the Kirin', 'Chart a Course', 'Yorion, Sky Nomad', 'Avacyn''s Pilgrim', 'Deathrite Shaman', 'Luminarch Aspirant', 'Mortal Obstinacy', 'Sylvan Scrying', 'Insidious Roots', 'Kefnet the Mindful', 'Yavimaya Coast', 'Wrath of God', 'Incinerate', 'Growth-Chamber Guardian', 'Irrigated Farmland', 'Throne of the Grim Captain', 'Avatar of the Resolute', 'Azusa''s Many Journeys', 'Gloomshrieker', 'Lumbering Falls', 'Dream Trawler', 'Pteramander', 'Disfigure', 'Damn', 'Knight of Autumn', 'Dire Fleet Daredevil', 'Field of the Dead', 'Webweaver Changeling', 'Nissa, Voice of Zendikar', 'Deadeye Tracker', 'Silhana Ledgewalker', 'Etali, Primal Conqueror', 'Sentinel''s Mark', 'Touch the Spirit Realm', 'Brass''s Tunnel-Grinder', 'Out of Air', 'Restoration Angel', 'Absorb', 'Fire-Lit Thicket', 'Path to Exile', 'Cloudpost', 'Haughty Djinn', 'Condemn', 'Conservatory', 'The Celestus', 'Sheltered Thicket', 'Skullbriar, the Walking Grave', 'Forbid', 'Kor Spiritdancer', 'Seaside Citadel', 'Polukranos, Unchained', 'Radagast the Brown', 'Glacial Fortress', 'Monument to Perfection', 'Courser of Kruphix', 'Collective Defiance', 'Maelstrom Pulse', 'Brushland', 'Out of Time', 'Sphinx''s Revelation', 'Cathedral of War', 'The World Tree', 'Heliod''s Pilgrim', 'Llanowar Wastes', 'Prohibit', 'Silence', 'Hardened Scales', 'Helm of the Gods', 'Servant of the Scale', 'Spirited Companion', 'Temple of Plenty', 'Jadelight Spelunker', 'Canopy Vista', 'Birds of Paradise', 'No More Lies', 'Phantom Interference', 'Declaration in Stone', 'Restless Vinestalk', 'Aphemia, the Cacophony', 'Spring-Loaded Sawblades', 'Riveteers Overlook', 'Jace, Architect of Thought', 'Castle Vantress', 'Soul Enervation', 'Flooded Grove', 'Guardian of Ghirapur', 'Eldrazi Displacer', 'Restless Spire', 'Cease // Desist', 'Cartouche of Solidarity', 'Spell Pierce', 'Crucible of Worlds', 'Circuit Mender', 'The Eternal Wanderer', 'Garruk Wildspeaker', 'Trash the Town', 'Deduce', 'Kaslem''s Stonetree', 'Dockside Chef', 'Escape Tunnel', 'Mystifying Maze', 'Taurean Mauler', 'Novice Inspector', 'Clay-Fired Bricks', 'Glimmervoid', 'Repeal', 'Thaumatic Compass', 'Primal Command', 'Hinterland Harbor', 'Words of Wind', 'Warriors'' Lesson', 'Sleight of Hand', 'Abrupt Decay', 'Hall of Heliod''s Generosity', 'Seismic Assault', 'Fortified Village', 'Cenote Scout', 'Swarm Shambler', 'Burst Lightning', 'Temple of Mystery', 'Hokori, Dust Drinker', 'Prophetic Prism', 'Insolent Neonate', 'Cabaretti Courtyard', 'Generous Patron', 'Study', 'Grand Coliseum', 'Kaya, Ghost Assassin', 'Squire''s Devotion', 'Horned Loch-Whale', 'Mystic Gate', 'Grakmaw, Skyclave Ravager', 'Jadelight Ranger', 'Brain Maggot', 'Sylvan Library', 'Temple of Malady', 'Ruric Thar, the Unbowed', 'Sulfur Falls', 'Unflinching Courage', 'Cinder Glade', 'Windborn Muse', 'Bedlam Reveler', 'Tendo Ice Bridge', 'Search for Azcanta', 'Thassa''s Intervention', 'Settle the Wreckage', 'Benevolent Bodyguard', 'Celestial Colonnade', 'Weaver of Harmony', 'Shivan Reef', 'Kudzu', 'Siege Rhino'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.9, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (4.7 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Authority of the Consuls', 'Riveteers Overlook', 'Phantom Interference', 'Hinterland Harbor', 'Obscura Storefront', 'Prophetic Prism', 'Sphinx''s Revelation', 'Growth-Chamber Guardian', 'Escape Tunnel', 'Shoot the Sheriff', 'Canyon Slough', 'Birds of Paradise', 'Azusa''s Many Journeys', 'Glint-Horn Buccaneer', 'Canopy Vista', 'Jadelight Ranger', 'Skullbriar, the Walking Grave', 'Fires of Invention', 'At Knifepoint', 'Graven Cairns', 'Courser of Kruphix', 'Declaration in Stone', 'Erebos''s Intervention', 'Kudzu', 'Abrupt Decay', 'Cruel Sadist', 'Kor Spiritdancer', 'Flooded Grove', 'Servant of the Scale', 'Michiko''s Reign of Truth', 'Search for Azcanta', 'Board the Weatherlight', 'Sentinel''s Mark', 'Kefnet the Mindful', 'Vadmir, New Blood', 'Dragonskull Summit', 'Rootbound Crag', 'Spring-Loaded Sawblades', 'Gloomshrieker', 'Brushland', 'Laughing Jasper Flint', 'Hall of Heliod''s Generosity', 'Unflinching Courage', 'Siege Rhino', 'Dig Up', 'Dockside Chef', 'Taurean Mauler', 'Sylvan Library', 'Temple of Malady', 'Kami of Transience', 'Vraska, Relic Seeker', 'Call of the Death-Dweller', 'Raging Ravine', 'Disfigure', 'Knight of Autumn', 'Cease // Desist', 'Trash the Town', 'Setessan Training', 'Root Maze', 'Ruric Thar, the Unbowed', 'Scattered Groves', 'Cloudpost', 'Lumbering Falls', 'Holy Day', 'Mystifying Maze', 'Brokers Hideout', 'The Eternal Wanderer', 'Carapace', 'Words of Wind', 'Grakmaw, Skyclave Ravager', 'Grand Coliseum', 'Wrath of God', 'Seaside Citadel', 'Deduce', 'Brain Maggot', 'Clay-Fired Bricks', 'Cinder Glade', 'Sunpetal Grove', 'Settle the Wreckage', 'Touch the Spirit Realm', 'Hardened Scales', 'Maelstrom Pulse', 'Nurturing Pixie', 'Kaya, Ghost Assassin', 'Tangle', 'Dark Petition', 'Temple of Mystery', 'Cartouche of Solidarity', 'Incinerate', 'Primal Command', 'Crucible of Worlds', 'Avacyn''s Pilgrim', 'Vindicate', 'Monument to Perfection', 'Cosmos Elixir', 'Volatile Fault', 'Benevolent Bodyguard', 'Sylvan Scrying', 'Teachings of the Kirin', 'The World Tree', 'Dire Fleet Daredevil', 'No More Lies', 'Mesmeric Orb', 'Radagast the Brown', 'Tymaret Calls the Dead', 'Foreboding Ruins', 'Garruk Wildspeaker', 'Grave Titan', 'Howling Mine', 'Seismic Assault', 'Sweltering Suns', 'Cenote Scout', 'Dreadbore', 'Hokori, Dust Drinker', 'Insidious Roots', 'Cathedral of War', 'Yorion, Sky Nomad', 'Restless Vinestalk', 'Burst Lightning', 'Tireless Tracker', 'Mortal Obstinacy', 'Brass''s Tunnel-Grinder', 'Eidolon of Blossoms', 'Swarm Shambler', 'Polukranos, Unchained', 'Luminarch Aspirant', 'Weaver of Harmony', 'Nissa, Voice of Zendikar', 'Aphemia, the Cacophony', 'Yavimaya Coast', 'Dreg Mangler', 'Binding Negotiation', 'Llanowar Wastes', 'Ethereal Haze', 'Languish', 'Cabaretti Courtyard', 'Etali, Primal Conqueror', 'Dead Weight', 'Gideon of the Trials', 'Insolent Neonate', 'Spell Pierce', 'Terminus', 'Thragtusk', 'Grenzo, Dungeon Warden', 'Jadelight Spelunker', 'Goblin Bombardment', 'Hour of Promise', 'Restoration Angel', 'Avatar of the Resolute', 'Heliod''s Pilgrim', 'Kari Zev, Skyship Raider', 'Kitesail Freebooter', 'Temple Bell', 'Throne of the Grim Captain', 'Ob Nixilis Reignited', 'Webweaver Changeling', 'Spirited Companion', 'Guardian of Ghirapur', 'Plow Under', 'Conservatory', 'Tymaret, Chosen from Death', 'Kaslem''s Stonetree', 'Helm of the Gods', 'Silence', 'Deathrite Shaman', 'Fog', 'Okiba Reckoner Raid', 'Fire-Lit Thicket', 'Glimmervoid', 'Heroes'' Reunion', 'Generous Patron', 'Sheltered Thicket', 'Nezumi Linkbreaker', 'Warriors'' Lesson', 'Woodland Cemetery', 'Fortified Village', 'Deadeye Tracker', 'Seasons Past', 'Squire''s Devotion', 'Novice Inspector', 'Windborn Muse', 'Damn', 'Wooded Bastion', 'Azusa, Lost but Seeking', 'Forsaken Miner', 'Temple of Plenty', 'Distress', 'Field of the Dead', 'Tendo Ice Bridge', 'Forbid', 'Gaea''s Blessing', 'Path to Exile', 'Silhana Ledgewalker', 'Collective Defiance', 'Soul Enervation', 'Vial Smasher, Gleeful Grenadier', 'Eldrazi Displacer', 'Guul Draz Vampire', 'Circuit Mender', 'Out of Time', 'The Celestus'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 4.7, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.8 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Canopy Vista', 'Eidolon of Blossoms', 'Kaslem''s Stonetree', 'Restoration Angel', 'Disfigure', 'Insidious Roots', 'Abrupt Decay', 'Volatile Fault', 'Sunpetal Grove', 'Out of Time', 'Teachings of the Kirin', 'Kefnet the Mindful', 'Temple of Mystery', 'Throne of the Grim Captain', 'Courser of Kruphix', 'Deadeye Tracker', 'Grand Coliseum', 'Words of Wind', 'Skullbriar, the Walking Grave', 'Damn', 'Primal Command', 'The Celestus', 'Thragtusk', 'Wooded Bastion', 'Sphinx''s Revelation', 'Prophetic Prism', 'Garruk Wildspeaker', 'Novice Inspector', 'Guardian of Ghirapur', 'Silhana Ledgewalker', 'Brain Maggot', 'Cinder Glade', 'Heliod''s Pilgrim', 'Weaver of Harmony', 'Azusa, Lost but Seeking', 'Hokori, Dust Drinker', 'Knight of Autumn', 'Radagast the Brown', 'Seismic Assault', 'Avatar of the Resolute', 'Brokers Hideout', 'Webweaver Changeling', 'Spirited Companion', 'Swarm Shambler', 'Spring-Loaded Sawblades', 'Eldrazi Displacer', 'Luminarch Aspirant', 'The World Tree', 'Llanowar Wastes', 'Benevolent Bodyguard', 'Squire''s Devotion', 'Mortal Obstinacy', 'Birds of Paradise', 'Deathrite Shaman', 'Cenote Scout', 'Cosmos Elixir', 'Call of the Death-Dweller', 'Brass''s Tunnel-Grinder', 'Lumbering Falls', 'Windborn Muse', 'Yavimaya Coast', 'Kor Spiritdancer', 'Seaside Citadel', 'Deduce', 'Clay-Fired Bricks', 'Settle the Wreckage', 'Sheltered Thicket', 'Yorion, Sky Nomad', 'Raging Ravine', 'Gloomshrieker', 'Hardened Scales', 'Cloudpost', 'The Eternal Wanderer', 'Dreg Mangler', 'Nurturing Pixie', 'Cruel Sadist', 'Cathedral of War', 'Escape Tunnel', 'Jadelight Spelunker', 'Cease // Desist', 'Tymaret, Chosen from Death', 'Conservatory', 'Servant of the Scale', 'Trash the Town', 'Dockside Chef', 'Monument to Perfection', 'Woodland Cemetery', 'Brushland', 'Carapace', 'Hall of Heliod''s Generosity', 'Incinerate', 'Warriors'' Lesson', 'Kudzu', 'Obscura Storefront', 'Avacyn''s Pilgrim', 'Aphemia, the Cacophony', 'Sylvan Library', 'Siege Rhino', 'Plow Under', 'Maelstrom Pulse', 'Phantom Interference', 'Kaya, Ghost Assassin', 'Azusa''s Many Journeys', 'Setessan Training', 'Declaration in Stone', 'Kami of Transience', 'Nissa, Voice of Zendikar', 'Search for Azcanta', 'Mystifying Maze', 'Helm of the Gods', 'Scattered Groves', 'Spell Pierce', 'Etali, Primal Conqueror', 'Silence', 'Dire Fleet Daredevil', 'Glimmervoid', 'Sentinel''s Mark', 'Vindicate', 'Flooded Grove', 'Unflinching Courage', 'Hour of Promise', 'Polukranos, Unchained', 'Restless Vinestalk', 'Temple of Malady', 'Path to Exile', 'Taurean Mauler', 'Touch the Spirit Realm', 'Forbid', 'Circuit Mender', 'Wrath of God', 'Grakmaw, Skyclave Ravager', 'Terminus', 'Tymaret Calls the Dead', 'Generous Patron', 'Jadelight Ranger', 'Soul Enervation', 'Tendo Ice Bridge', 'Collective Defiance', 'Temple of Plenty', 'Ruric Thar, the Unbowed', 'Field of the Dead', 'Glint-Horn Buccaneer', 'Crucible of Worlds', 'Fire-Lit Thicket', 'Cabaretti Courtyard', 'Cartouche of Solidarity', 'No More Lies', 'Fortified Village', 'Sylvan Scrying', 'Growth-Chamber Guardian', 'Hinterland Harbor', 'Insolent Neonate', 'Michiko''s Reign of Truth', 'Riveteers Overlook'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.8, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.2 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Ruric Thar, the Unbowed', 'Grakmaw, Skyclave Ravager', 'Sheltered Thicket', 'Abrupt Decay', 'Insidious Roots', 'Tymaret, Chosen from Death', 'Insolent Neonate', 'Tendo Ice Bridge', 'Jadelight Spelunker', 'Kami of Transience', 'Temple of Malady', 'Growth-Chamber Guardian', 'Azusa, Lost but Seeking', 'Dire Fleet Daredevil', 'Hinterland Harbor', 'Incinerate', 'Aphemia, the Cacophony', 'Collective Defiance', 'Dockside Chef', 'Servant of the Scale', 'The Celestus', 'Call of the Death-Dweller', 'Brass''s Tunnel-Grinder', 'Skullbriar, the Walking Grave', 'Field of the Dead', 'Webweaver Changeling', 'Soul Enervation', 'Brain Maggot', 'Teachings of the Kirin', 'Cruel Sadist', 'Throne of the Grim Captain', 'Grand Coliseum', 'Kefnet the Mindful', 'Brokers Hideout', 'Weaver of Harmony', 'Courser of Kruphix', 'Seismic Assault', 'Llanowar Wastes', 'Woodland Cemetery', 'Cabaretti Courtyard', 'Disfigure', 'Trash the Town', 'Mystifying Maze', 'The World Tree', 'Eidolon of Blossoms', 'Search for Azcanta', 'Jadelight Ranger', 'Glint-Horn Buccaneer', 'Cinder Glade', 'Flooded Grove', 'Phantom Interference', 'Avatar of the Resolute', 'Raging Ravine', 'Forbid', 'Gloomshrieker', 'Warriors'' Lesson', 'Words of Wind', 'Azusa''s Many Journeys', 'Yavimaya Coast', 'Taurean Mauler', 'Cenote Scout', 'Volatile Fault', 'Escape Tunnel', 'Etali, Primal Conqueror', 'Restless Vinestalk', 'Tymaret Calls the Dead', 'Crucible of Worlds', 'Nissa, Voice of Zendikar', 'Hardened Scales', 'Sylvan Library', 'Deadeye Tracker', 'Swarm Shambler', 'Fire-Lit Thicket', 'Dreg Mangler'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.5 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Timeless Dragon', 'Glacial Fortress', 'Hogaak, Arisen Necropolis', 'Temple of Enlightenment', 'Bloodsoaked Champion', 'Celestial Colonnade', 'Hissing Quagmire', 'Woodland Cemetery', 'Necroblossom Snarl', 'Venser, Shaper Savant', 'Absorb', 'Cave of the Frost Dragon', 'Phantom Interference', 'Putrid Imp', 'Okina, Temple to the Grandfathers', 'Field of the Dead', 'Rubblebelt Maverick', 'Deduce', 'Commune with the Gods', 'Path to Exile', 'Aftermath Analyst', 'Llanowar Wastes', 'Out of Air', 'Detention Sphere', 'Gisela, the Broken Blade', 'Dig Through Time', 'The Raven''s Warning', 'Argoth, Sanctum of Nature', 'Vivid Marsh', 'Dregscape Zombie', 'Obscura Storefront', 'Crawling Barrens', 'Snarling Gorehound', 'Golgari Grave-Troll', 'Insidious Roots', 'Tranquil Thicket', 'Tendo Ice Bridge', 'No More Lies', 'Temple of Silence', 'Shizo, Death''s Storehouse', 'Damn', 'Forbid', 'Repeal', 'Temple of Deceit', 'Mystic Gate', 'Kaito, Dancing Shadow', 'Horned Loch-Whale', 'Caves of Koilos', 'Gilt-Leaf Palace', 'Logic Knot', 'Irrigated Farmland'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.5, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.6 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Master of Etherium', 'Westvale Abbey', 'Windborn Muse', 'Prahv, Spires of Order', 'Novice Inspector', 'Ghitu Encampment', 'Secluded Courtyard', 'Luminarch Aspirant', 'Canopy Vista', 'Drowned Catacomb', 'Vivid Meadow', 'Dauntless Escort', 'Avacyn''s Pilgrim', 'Kudzu', 'Primal Surge', 'Fire-Lit Thicket', 'Sunken Hollow', 'Scene of the Crime', 'Shardless Agent', 'Sphere of the Suns', 'Languish', 'Tezzeret the Schemer', 'Field of the Dead', 'Tibalt''s Trickery', 'Erebos''s Intervention', 'Tithing Blade', 'Settle the Wreckage', 'Fungal Reaches', 'Flooded Grove', 'Garruk Wildspeaker', 'Declaration in Stone', 'Fortified Village', 'Shivan Reef', 'Temple of Plenty', 'Hokori, Dust Drinker', 'Hidden Nursery', 'Branch of Vitu-Ghazi', 'Everflowing Chalice', 'Kessig Wolf Run', 'Thirst for Knowledge', 'Etched Champion', 'Cosmos Elixir', 'Heart of Kiran', 'Hidden Cataract', 'Hanweir Battlements', 'Yavimaya Coast', 'Primal Command', 'Sunpetal Grove', 'Tezzeret, Agent of Bolas', 'Tendo Ice Bridge', 'Plow Under', 'Birds of Paradise', 'Circuit Mender', 'Thopter Spy Network'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.6, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.2 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Captain Storm, Cosmium Raider', 'Dragonskull Summit', 'Sulfur Falls', 'Canyon Slough', 'Buried Alive', 'Malcolm, the Eyes', 'Dreadbore', 'Breeches, the Blastmaker', 'Shriekmaw', 'Hollow Marauder', 'Rabbit Battery', 'Blood Spatter Analysis', 'Smoldering Marsh', 'Staunch Crewmate', 'Saheeli''s Lattice', 'Yahenni''s Expertise', 'Kitesail Larcenist', 'Shinka, the Bloodsoaked Keep', 'Brass''s Tunnel-Grinder', 'Oliphaunt', 'Tithing Blade', 'Syr Ginger, the Meal Ender', 'Burst Lightning', 'Spyglass Siren', 'Starving Revenant', 'The Everflowing Well', 'Sword of Light and Shadow', 'Master of Death', 'Demigod of Revenge', 'Enterprising Scallywag', 'Glen Elendra Archmage', 'Shivan Reef', 'Drowned Catacomb', 'Fetid Pools', 'Andúril, Flame of the West', 'Experimental Synthesizer', 'Battle of Frost and Fire', 'Breeches, Eager Pillager'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.9 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Stormwing Entity', 'Search for Azcanta', 'Prohibit', 'Pteramander', 'Drowned Catacomb', 'Dragonskull Summit', 'Sleight of Hand', 'Haughty Djinn', 'Mu Yanling, Sky Dancer', 'Cruel Ultimatum', 'Deduce', 'Restless Spire', 'Incinerate', 'Phantom Interference', 'Bedlam Reveler', 'Burst Lightning', 'Shivan Reef', 'Geyadrone Dihada', 'Nicol Bolas, the Ravager', 'Quicken', 'Dig Through Time', 'Lavaclaw Reaches', 'Fetid Pools', 'Fiery Temper', 'Spell Pierce', 'Sulfur Falls', 'Sweltering Suns', 'Hagra Mauling', 'Chart a Course', 'Sunken Hollow', 'Abrade', 'Temple of Epiphany', 'Make Disappear', 'Dreadbore', 'Smoldering Marsh', 'Doom Blade'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.9, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (1.9 > 1.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Talion''s Messenger', 'No More Lies', 'Rabbit Battery', 'Luminarch Aspirant', 'Siren''s Ruse', 'Novice Inspector', 'Breeches, Eager Pillager', 'Spell Pierce', 'Mikokoro, Center of the Sea', 'Holy Day', 'Damn', 'Walk the Aeons', 'Hall of Heliod''s Generosity', 'Flowering of the White Tree', 'Blue Sun''s Zenith', 'Eiganjo Castle', 'Celestial Colonnade', 'Folio of Fancies', 'Savor the Moment', 'Chandra, Fire Artisan', 'Castle Vantress', 'Dictate of Kruphix', 'Requisition Raid', 'Hypnotic Sprite', 'Soldier of the Pantheon', 'Malcolm, the Eyes', 'Jace Beleren', 'Shinka, the Bloodsoaked Keep', 'Solitary Confinement', 'Out of Air', 'Phantom Interference', 'Prairie Stream', 'Deduce', 'Icatian Javelineers', 'Arc Trail', 'Fires of Invention', 'Port Town', 'Mystic Gate', 'Sleight of Hand', 'Mysterious Pathlighter', 'Captain Storm, Cosmium Raider', 'Restless Spire', 'Glen Elendra Archmage', 'Dig Through Time', 'Shivan Reef', 'Wandering Fumarole', 'Irrigated Farmland', 'Sulfur Falls', 'Kellan, Daring Traveler', 'Glacial Fortress', 'Part the Waterveil', 'Dire Fleet Daredevil', 'Staunch Crewmate', 'Benevolent Bodyguard', 'Twining Twins', 'Settle the Wreckage', 'Metallic Mimic', 'Kitesail Larcenist', 'Spyglass Siren', 'Jace, Architect of Thought', 'Thalia, Guardian of Thraben', 'Search for Azcanta', 'Breeches, the Blastmaker', 'Chandra, Flamecaller', 'Path to Exile', 'Scion of Oona', 'Luminarch Ascension', 'Wrath of God', 'Faerie Guidemother', 'Detention Sphere', 'Faerie Vandal', 'Thalia''s Lieutenant', 'Student of Warfare', 'Timeless Dragon', 'Champion of the Parish', 'Porphyry Nodes', 'Desolate Lighthouse', 'Andúril, Flame of the West', 'Case of the Gateway Express', 'Valakut Awakening', 'Burst Lightning'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 1.9, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.7 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Vivid Marsh', 'No More Lies', 'Midnight Clock', 'Thrun, Breaker of Silence', 'Skysovereign, Consul Flagship', 'Deduce', 'Forbid', 'Jace, Architect of Thought', 'Dig Through Time', 'Out of Air', 'Damn', 'Gideon, Ally of Zendikar', 'Thassa''s Intervention', 'Sword of Light and Shadow', 'Benevolent Bodyguard', 'Lively Dirge', 'Irrigated Farmland', 'Andúril, Flame of the West', 'Thaumatic Compass', 'Repeal', 'Urza''s Ruinous Blast', 'Dawn of Hope', 'Study', 'Prairie Stream', 'Raffine''s Informant', 'Spell Pierce', 'River of Tears', 'Mystic Gate', 'Thirst for Knowledge', 'Parhelion II', 'Caves of Koilos', 'Master of Death', 'Brushland', 'Thrun, the Last Troll', 'Day of Judgment', 'Condemn', 'Path to Exile', 'Wrath of God', 'Dream Trawler', 'Celestial Colonnade', 'Glacial Fortress', 'Avacyn''s Pilgrim', 'Gandalf the White', 'Yeva, Nature''s Herald', 'Bitter Triumph', 'Greasefang, Okiba Boss', 'Obscura Storefront', 'Tainted Indulgence', 'Vivid Meadow', 'Vedalken Shackles', 'Vivien, Champion of the Wilds', 'Birds of Paradise', 'Sunpetal Grove'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.7, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.7 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Path to Exile', 'Temple of Malady', 'Sol Talisman', 'Battle of Wits', 'Thragtusk', 'Drowned Catacomb', 'Revolutionary Rebuff', 'Consume the Meek', 'To the Slaughter', 'Mox Tantalite', 'Restless Vinestalk', 'Holy Day', 'Fae of Wishes', 'Nephalia Drownyard', 'Brokers Hideout', 'Choked Estuary', 'Grasp of Darkness', 'Glacial Fortress', 'Aetherspouts', 'Vraska''s Contempt', 'Dead Weight', 'Castle Vantress', 'Damn', 'Ob Nixilis Reignited', 'Hall of Heliod''s Generosity', 'No More Lies', 'Garruk Wildspeaker', 'Lost Legacy', 'Tamiyo, Collector of Tales', 'Vexing Shusher', 'Out of Air', 'Vineglimmer Snarl', 'Black Sun''s Zenith', 'Irrigated Farmland', 'Dig Up', 'Celestial Colonnade', 'Sultai Charm', 'Cultivate', 'Ark of Blight', 'Erebos''s Intervention', 'Deduce', 'Fetid Pools', 'Tangle', 'Champion of Wits', 'Detention Sphere', 'Folio of Fancies', 'Flooded Grove', 'Temple of Deceit', 'Yahenni''s Expertise', 'Crux of Fate', 'Night of Souls'' Betrayal', 'Quicken', 'Specter''s Shriek', 'Settle the Wreckage', 'Hinterland Harbor', 'Ritual of Soot', 'Utopia Tree', 'Syncopate', 'Prairie Stream', 'Mystic Gate', 'Into the Roil', 'Primal Command', 'Witchbane Orb', 'Oracle of Mul Daya', 'Sunken Hollow', 'Wrath of God', 'Porphyry Nodes', 'Diabolic Tutor', 'Jungle Hollow', 'Dismal Backwater', 'Fracturing Gust', 'Temple of Mystery', 'Mikokoro, Center of the Sea', 'Hero''s Downfall', 'Scavenger Grounds', 'Silent Gravestone', 'Upheaval', 'Pulse of the Grid', 'Reach Through Mists', 'Disfigure', 'Riftwing Cloudskate', 'Solemn Simulacrum', 'Thassa''s Intervention', 'Blue Sun''s Zenith', 'Appetite for Brains', 'Think Twice', 'Ultimate Price', 'Solitary Confinement', 'Memoricide', 'Naturalize', 'Thawing Glaciers', 'Thornwood Falls', 'Colossal Skyturtle', 'Tribute to Hunger', 'Azusa''s Many Journeys', 'Primeval Bounty', 'Lumbering Falls', 'Encroaching Wastes', 'Luminarch Ascension', 'Woodland Cemetery', 'Bile Blight', 'Repeal', 'Timeless Dragon', 'Pull from Tomorrow', 'Midnight Clock', 'Birds of Paradise', 'Languish', 'Obstinate Baloth', 'Vivid Marsh', 'Increasing Ambition', 'Courser of Kruphix', 'Soul Shatter', 'Mastermind''s Acquisition', 'Sylvan Caryatid', 'Easy Prey', 'Hieroglyphic Illumination', 'Flaying Tendrils', 'Search for Azcanta', 'Coalition Relic', 'Doom Blade'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.7, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.2 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Llanowar Wastes', 'Temple of Deceit', 'Rootbound Crag', 'Cenote Scout', 'Yavimaya Coast', 'Dire Fleet Daredevil', 'Golgari Grave-Troll', 'Foreboding Ruins', 'Game Trail', 'Rubblebelt Maverick', 'Aftermath Analyst', 'Dread Return', 'Nissa, Voice of Zendikar', 'Tainted Indulgence', 'Judith, the Scourge Diva', 'Kessig Wolf Run', 'Vivid Marsh', 'Warriors'' Lesson', 'Master of Death', 'Birds of Paradise', 'Commune with the Gods', 'Argoth, Sanctum of Nature', 'Vraan, Executioner Thane', 'Lotleth Troll', 'Forsaken Miner', 'Shoot the Sheriff', 'Deathrite Shaman', 'Tranquil Thicket', 'Tasigur, the Golden Fang', 'Temple of Mystery', 'Temple of Malady', 'Field of the Dead', 'Vraska the Unseen', 'Woodland Cemetery', 'Dread Wanderer', 'Necroblossom Snarl', 'Grapple with the Past', 'Graven Cairns', 'Hissing Quagmire', 'Boom // Bust', 'Incinerate', 'Garruk Wildspeaker', 'Burst Lightning', 'Forbid', 'Kudzu', 'Flooded Grove', 'Dark Confidant', 'Cabal Therapist', 'Insidious Roots', 'Deep-Cavern Bat', 'Deeproot Wayfinder', 'Hogaak, Arisen Necropolis', 'Bloodsoaked Champion', 'Dreadhorde Butcher', 'Goblin Bombardment', 'Shriekhorn', 'Akki Blizzard-Herder', 'Regrowth', 'Lodestone Golem', 'Lost Legacy', 'Go for Blood', 'Call the Bloodline', 'Genesis', 'Putrid Imp'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.4 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Rabbit Battery', 'Woodland Cemetery', 'Kambal, Profiteering Mayor', 'Breeches, Eager Pillager', 'Dig Through Time', 'Soul Search', 'Obsessive Search', 'Sickening Shoal', 'Canyon Slough', 'Outrageous Robbery', 'Dreadbore', 'Aurelia, the Law Above', 'General Ferrous Rokiric', 'Dire Fleet Daredevil', 'Yahenni''s Expertise', 'Pest Infestation', 'Disfigure', 'Hissing Quagmire', 'Chart a Course', 'Open the Way', 'Llanowar Wastes', 'Burst Lightning', 'Pteramander', 'Bedlam Reveler', 'Owl Familiar', 'Sleight of Hand', 'Death Cloud', 'Master of Death', 'Price of Progress', 'Haughty Djinn', 'Andúril, Flame of the West', 'Profane Command', 'Shivan Reef', 'Restless Spire', 'Spyglass Siren', 'Wandering Fumarole', 'Sulfur Falls', 'Lavaclaw Reaches', 'Courser of Kruphix', 'Lightning Helix', 'River of Tears', 'Isolated Chapel', 'Obscura Storefront', 'Out of Air', 'Abrupt Decay', 'Logic Knot', 'Volatile Fault', 'Choked Estuary', 'Magma Spray', 'Taii Wakeen, Perfect Shot', 'Long Goodbye', 'Deduce', 'Temple of Malady', 'Bitter Triumph', 'Kaya the Inexorable', 'Siren''s Ruse', 'Eiganjo Castle', 'Rhys the Redeemed', 'Lounge', 'Captain Lannery Storm', 'Incinerate', 'Vindicate', 'Drowned Catacomb', 'Arc Trail', 'Black Sun''s Zenith', 'Pillar of the Paruns', 'Captain Storm, Cosmium Raider', 'Deeproot Wayfinder', 'Sorin, Vengeful Bloodlord', 'Riveteers Overlook', 'Oath of Kaya', 'Confounding Riddle', 'Prohibit', 'Breeches, the Blastmaker', 'Erebos''s Intervention', 'Jungle Hollow', 'Mardu Charm', 'Tainted Indulgence', 'Kitesail Larcenist', 'General''s Enforcer', 'Rem Karolus, Stalwart Slayer', 'Mind Shatter', 'Ajani Vengeant', 'Unbound Flourishing', 'Field of the Dead', 'Boromir, Warden of the Tower', 'Hero of Precinct One', 'Reckless Lackey', 'Figure of Destiny', 'Clifftop Retreat', 'Phantom Interference', 'Lochmere Serpent', 'Shinka, the Bloodsoaked Keep', 'Metallic Mimic', 'Spell Pierce', 'Desolate Lighthouse', 'Necroplasm', 'Necroblossom Snarl', 'Kaya, Ghost Assassin', 'Malcolm, the Eyes', 'Nimble Obstructionist', 'Forbid', 'Jirina, Dauntless General', 'Staunch Crewmate'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.4, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.1 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Hidden Volcano', 'Shadow of Mortality', 'Codex Shredder', 'Sol Talisman', 'Professional Face-Breaker', 'Koth of the Hammer', 'Squee, Goblin Nabob', 'Mastermind''s Acquisition', 'Lake of the Dead', 'Reckoner''s Bargain', 'Rootbound Crag', 'Autochthon Wurm', 'Caves of Koilos', 'Abrupt Decay', 'Volcanic Salvo', 'Calibrated Blast', 'Hellspur Posse Boss', 'Down // Dirty', 'Field of the Dead', 'Raging Ravine', 'Sylvan Library', 'Kitesail Freebooter', 'Dragonskull Summit', 'Sweltering Suns', 'The Elder Dragon War', 'Goblin Dark-Dwellers', 'Mizzium Mortars', 'Soul Search', 'Pyxis of Pandemonium', 'Cinder Glade', 'Birds of Paradise', 'Izoni, Thousand-Eyed', 'Buried Alive', 'Cut // Ribbons', 'Soured Springs', 'Battlefield Forge', 'Bristling Backwoods', 'Aetherflux Reservoir', 'Koth, Fire of Resistance', 'Liliana Vess', 'Rugged Prairie', 'Billiard Room', 'Heartflame Duelist', 'Mox Tantalite', 'Vindicate', 'Dining Room', 'Demigod of Revenge', 'Lightning Helix', 'Woodland Cemetery', 'Fire-Lit Thicket', 'Blinkmoth Infusion', 'Smoldering Marsh', 'Binding Negotiation', 'Buried Treasure', 'Maelstrom Pulse', 'Grenzo, Dungeon Warden', 'Abraded Bluffs', 'Inventors'' Fair', 'Enterprising Scallywag', 'Crackling Doom', 'Graven Cairns', 'Stensia Bloodhall', 'Matzalantli, the Great Door', 'Bolas''s Citadel', 'Canyon Slough', 'Dark Confidant', 'Polukranos, Unchained', 'Geological Appraiser', 'Brass''s Tunnel-Grinder', 'Oliphaunt', 'Mana Geode', 'Jagged Barrens', 'Sylvan Caryatid', 'Burst Lightning', 'Eroded Canyon'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.1, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.2 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Approach of the Second Sun', 'Hostage Taker', 'Disenchant', 'Port Town', 'Secluded Steppe', 'Long Goodbye', 'Deduce', 'Dakkon, Shadow Slayer', 'Mox Tantalite', 'Ritual of Rejuvenation', 'Lost Legacy', 'Sol Talisman', 'Spell Pierce', 'Celestial Colonnade', 'Lonely Sandbar', 'Angelsong', 'Aurification', 'Phantom Interference', 'Easy Prey', 'Glacial Fortress', 'Sunken Hollow', 'Repeal', 'Silent Gravestone', 'Academy Loremaster', 'Painful Quandary', 'Worst Fears', 'Temple of Deceit', 'Horned Loch-Whale', 'Hallowed Burial', 'Novice Inspector', 'Caves of Koilos', 'Out of Air', 'Survival Cache', 'Temple of Silence', 'Cosmos Elixir', 'Curse of the Cabal', 'Cruel Reality', 'Erebos''s Intervention', 'Gideon Jura', 'Out of Time', 'Painful Truths', 'Forbid', 'Castle Vantress', 'Vedalken Shackles', 'Temple of Enlightenment', 'Stoic Sphinx', 'Dovin, Grand Arbiter', 'Torment of Scarabs', 'Isolated Chapel', 'Day of Judgment', 'Tempest Djinn', 'Detention Sphere', 'Renewed Faith', 'Trespasser''s Curse'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.8 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Lost Legacy', 'Woodland Cemetery', 'Damn', 'Temple of Silence', 'Mox Tantalite', 'Farsight Ritual', 'Trespasser''s Curse', 'Necroblossom Snarl', 'Bloodsoaked Champion', 'Out of Air', 'Forbid', 'Llanowar Wastes', 'Hostage Taker', 'Anafenza, the Foremost', 'Goblin Bombardment', 'Ritual of Rejuvenation', 'Silent Gravestone', 'Condemn', 'Abrupt Decay', 'Sphinx''s Revelation', 'Sylvan Caryatid', 'Day of Judgment', 'Sunken Hollow', 'Easy Prey', 'Cosmos Elixir', 'Mystic Gate', 'Vraan, Executioner Thane', 'Hissing Quagmire', 'Dig Through Time', 'Fateful Absence', 'Curse of the Cabal', 'Stirring Wildwood', 'Gideon Jura', 'Canopy Vista', 'Study', 'Deduce', 'Irrigated Farmland', 'Sylvan Library', 'Knight of Autumn', 'Worst Fears', 'Painful Truths', 'Long Goodbye', 'No More Lies', 'Fortified Village', 'Burst Lightning', 'Dakkon, Shadow Slayer', 'Out of Time', 'Glissa Sunslayer', 'Castle Vantress', 'Hallowed Burial', 'Cruel Reality', 'Scattered Groves', 'Lonely Sandbar', 'Sol Talisman', 'Garruk, Primal Hunter', 'Rain of Revelation', 'Port Town', 'Secluded Steppe', 'Glacial Fortress', 'Repeal', 'Isolated Chapel', 'Disenchant', 'Celestial Colonnade', 'Survival Cache', 'Sword of Light and Shadow', 'Novice Inspector', 'Painful Quandary', 'Angelsong', 'Mindsplice Apparatus', 'Judith, the Scourge Diva', 'Temple of Deceit', 'Detention Sphere', 'Renewed Faith', 'Aurification', 'Erebos''s Intervention', 'Approach of the Second Sun', 'Deep-Cavern Bat', 'Phantom Interference', 'Foreboding Ruins', 'Fumigate', 'Dovin, Grand Arbiter', 'Boromir, Warden of the Tower', 'Siege Rhino', 'Dreadhorde Butcher', 'Thassa''s Intervention', 'Temple of Enlightenment', 'Kunoros, Hound of Athreos', 'Graven Cairns', 'Dragonskull Summit', 'Wrath of God', 'Torment of Scarabs', 'Fourth Bridge Prowler', 'Dark Confidant', 'Forsaken Miner', 'Caves of Koilos', 'Dread Wanderer'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.8, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.2 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Damn', 'Disenchant', 'Irrigated Farmland', 'Secluded Steppe', 'Ritual of Rejuvenation', 'Glacial Fortress', 'Mox Tantalite', 'Angelsong', 'Cruel Reality', 'Sol Talisman', 'Bedlam Reveler', 'Dovin, Grand Arbiter', 'Out of Air', 'Gideon Jura', 'Prairie Stream', 'Worst Fears', 'Curse of the Cabal', 'Logic Knot', 'Out of Time', 'Novice Inspector', 'Isolated Chapel', 'Easy Prey', 'Pteramander', 'Trespasser''s Curse', 'Cosmos Elixir', 'Sleight of Hand', 'Nimbus Maze', 'Study', 'Sunken Hollow', 'Detention Sphere', 'Hallowed Burial', 'Celestial Colonnade', 'The Eternal Wanderer', 'Magma Spray', 'Sulfur Falls', 'Incinerate', 'Temple of Enlightenment', 'Painful Quandary', 'Shivan Reef', 'Wrath of God', 'Aurification', 'Hostage Taker', 'Mystic Gate', 'Haughty Djinn', 'Lost Legacy', 'Thassa''s Intervention', 'Search for Azcanta', 'Horned Loch-Whale', 'Chart a Course', 'Timeless Dragon', 'Absorb', 'Dig Through Time', 'Phantom Interference', 'Piracy Charm', 'Port Town', 'No More Lies', 'Deduce', 'Caves of Koilos', 'Abuelo''s Awakening', 'Field of the Dead', 'Renewed Faith', 'Day of Judgment', 'Gisela, the Broken Blade', 'Survival Cache', 'Silent Gravestone', 'Approach of the Second Sun', 'Price of Progress', 'Temple of Silence', 'Castle Vantress', 'Path to Exile', 'The Raven''s Warning', 'Lonely Sandbar', 'Erebos''s Intervention', 'Painful Truths', 'Forbid', 'Temple of Deceit', 'Starfield of Nyx', 'Dakkon, Shadow Slayer', 'Cave of the Frost Dragon', 'Decree of Silence', 'Torment of Scarabs', 'Hall of Heliod''s Generosity', 'Runed Halo', 'Restless Spire', 'Long Goodbye'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.1 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Llanowar Loamspeaker', 'Wrath of God', 'Vivien''s Arkbow', 'Judith, the Scourge Diva', 'Mystic Gate', 'Guardian of Ghirapur', 'Dakkon, Shadow Slayer', 'Hostage Taker', 'Easy Prey', 'Price of Progress', 'Irrigated Farmland', 'Dovin, Grand Arbiter', 'Aurification', 'Vraan, Executioner Thane', 'Jace, Architect of Thought', 'Torment of Scarabs', 'Survival Cache', 'Viashino Pyromancer', 'Long Goodbye', 'Disenchant', 'Search for Azcanta', 'Knight of Autumn', 'Tamiyo''s Safekeeping', 'Sunpetal Grove', 'Foreboding Ruins', 'Hallowed Burial', 'Mox Tantalite', 'Bloodsoaked Champion', 'Damn', 'Dream Trawler', 'Sylvan Caryatid', 'Repeal', 'Painful Truths', 'Out of Air', 'Canopy Vista', 'Dread Wanderer', 'Ritual of Rejuvenation', 'Secluded Steppe', 'Searing Spear', 'Day of Judgment', 'Gala Greeters', 'Kumano Faces Kakkazan', 'Lost Legacy', 'Burst Lightning', 'Painful Quandary', 'Thaumatic Compass', 'Isolated Chapel', 'Sylvan Library', 'Condemn', 'Deduce', 'Silent Gravestone', 'Bomat Courier', 'Thassa''s Intervention', 'Out of Time', 'Goblin Bombardment', 'No More Lies', 'Deep-Cavern Bat', 'Restless Prairie', 'Incinerate', 'Ball Lightning', 'Temple of Deceit', 'Renewed Faith', 'Detention Sphere', 'Cosmos Elixir', 'Lonely Sandbar', 'Caves of Koilos', 'Trespasser''s Curse', 'Cruel Reality', 'Novice Inspector', 'Sunken Hollow', 'Port Town', 'Raffine''s Informant', 'Vadmir, New Blood', 'Gideon Jura', 'Dark Confidant', 'Dragonskull Summit', 'Thragtusk', 'Curse of the Cabal', 'Forsaken Miner', 'Horned Loch-Whale', 'Temple of Silence', 'Approach of the Second Sun', 'Castle Vantress', 'Graven Cairns', 'Sulfuric Vortex', 'Dreadhorde Butcher', 'Yasharn, Implacable Earth', 'Glacial Fortress', 'Study', 'Celestial Colonnade', 'Sol Talisman', 'Angelsong', 'Eerie Interlude', 'Worst Fears', 'Path to Exile', 'Dig Through Time', 'Temple of Enlightenment', 'Vexing Devil', 'Erebos''s Intervention', 'Absorb'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.1, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (4.1 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Temple of Enlightenment', 'Long Goodbye', 'Venser, Shaper Savant', 'Incinerate', 'Disenchant', 'Sol Talisman', 'Kaya, Ghost Assassin', 'Case of the Locked Hothouse', 'Thalia''s Lieutenant', 'Soldier of the Pantheon', 'Golgari Grave-Troll', 'Clay-Fired Bricks', 'Guardian of Ghirapur', 'Wooded Bastion', 'Gallia of the Endless Dance', 'Painful Truths', 'Price of Progress', 'Sunpetal Grove', 'Temple of Malady', 'Approach of the Second Sun', 'Birds of Paradise', 'Fortified Beachhead', 'Felidar Retreat', 'Torment of Scarabs', 'Erebos''s Intervention', 'Hazoret the Fervent', 'Fire-Lit Thicket', 'Flooded Grove', 'Circuit Mender', 'Out of Time', 'Elite Vanguard', 'Absorb', 'Vivid Marsh', 'No More Lies', 'Abrade', 'Irrigated Farmland', 'Repeal', 'Cosmos Elixir', 'Ritual of Rejuvenation', 'Shoot the Sheriff', 'Earthshaker Khenra', 'Lukka, Bound to Ruin', 'Flood Plain', 'Prophetic Prism', 'Painful Quandary', 'Minas Tirith', 'Day of Judgment', 'Aftermath Analyst', 'Burst Lightning', 'Flameskull', 'Study', 'Bard Class', 'Smoldering Marsh', 'Survival Cache', 'Grasslands', 'Itzquinth, Firstborn of Gishath', 'Deep-Cavern Bat', 'Rivendell', 'Blade Splicer', 'Field of the Dead', 'Thief of Sanity', 'Gideon Jura', 'Cave of the Frost Dragon', 'Leonin Arbiter', 'Hostage Taker', 'Stromkirk Noble', 'Dakkon, Shadow Slayer', 'Woodland Cemetery', 'Cunning Coyote', 'Curse of the Cabal', 'Yorion, Sky Nomad', 'Conduit of Worlds', 'The Raven''s Warning', 'Hall of Heliod''s Generosity', 'Icatian Javelineers', 'Timeless Dragon', 'Cruel Reality', 'Hour of Promise', 'Ballroom', 'Frantic Scapegoat', 'Dovin, Grand Arbiter', 'Abrupt Decay', 'Port Town', 'Raging Ravine', 'Settle the Wreckage', 'Nimbus Maze', 'Jolene, Plundering Pugilist', 'Dig Through Time', 'Obscura Charm', 'Eiganjo Castle', 'Tainted Indulgence', 'Prairie Stream', 'Thalia, Guardian of Thraben', 'Commune with the Gods', 'Rootbound Crag', 'Harbin, Vanguard Aviator', 'Dark Confidant', 'Detention Sphere', 'Vindicate', 'Domri, Anarch of Bolas', 'Thaumatic Compass', 'Path to Exile', 'Geological Appraiser', 'Dream Trawler', 'Renewed Faith', 'Yavimaya Coast', 'Mystic Gate', 'Halana and Alena, Partners', 'Brushland', 'Glissa Sunslayer', 'Phoenix of Ash', 'Dig Up', 'Pippin, Guard of the Citadel', 'Out of Air', 'Spirited Companion', 'Avacyn''s Pilgrim', 'Caves of Koilos', 'Lost Legacy', 'Sorin, Vengeful Bloodlord', 'Worst Fears', 'Tireless Tracker', 'Radha, Heart of Keld', 'Wrath of God', 'Isolated Chapel', 'Touch the Spirit Realm', 'Phantom Interference', 'Boromir, Warden of the Tower', 'Maelstrom Pulse', 'Glacial Fortress', 'Hogaak, Arisen Necropolis', 'Keldon Megaliths', 'Hokori, Dust Drinker', 'Novice Inspector', 'Seaside Citadel', 'Angelsong', 'Binding Negotiation', 'Sword of Hearth and Home', 'Ghitu Encampment', 'Twining Twins', 'Canopy Vista', 'Brokers Hideout', 'Skystrike Officer', 'Lotleth Troll', 'Volatile Fault', 'Titania''s Command', 'Lonely Sandbar', 'Champion of the Parish', 'Necroblossom Snarl', 'Xenagos, the Reveler', 'Mox Tantalite', 'Shambling Vent', 'Secluded Steppe', 'Celestial Colonnade', 'Windborn Muse', 'Vraska, Golgari Queen', 'Deduce', 'Easy Prey', 'Sunken Hollow', 'Hallowed Burial', 'Scattered Groves', 'Plow Under', 'Dreadbore', 'Spelunking', 'Master of Death', 'Lurrus of the Dream-Den', 'Genesis', 'Damn', 'Call the Bloodline', 'Secret Passage', 'Primal Command', 'Flowering of the White Tree', 'Hajar, Loyal Bodyguard', 'Temple of Silence', 'Forbid', 'Migloz, Maze Crusher', 'Shinka, the Bloodsoaked Keep', 'Horned Loch-Whale', 'Ashiok, Nightmare Weaver', 'Trespasser''s Curse', 'Declaration in Stone', 'Benevolent Bodyguard', 'Shock', 'Hissing Quagmire', 'Insidious Roots', 'Temple of Mystery', 'Kumano Faces Kakkazan', 'Goblin Dark-Dwellers', 'Temple of Deceit', 'Sea Gate Oracle', 'Aurification', 'Silent Gravestone', 'Okina, Temple to the Grandfathers', 'Llanowar Wastes', 'Search for Azcanta', 'The World Tree', 'Argoth, Sanctum of Nature', 'Sylvan Library'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 4.1, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.2 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Electrolyze', 'Lightning Helix', 'Shivan Reef', 'Lonely Sandbar', 'Spyglass Siren', 'Abrade', 'Survival Cache', 'Figure of Destiny', 'Irrigated Farmland', 'Disenchant', 'Eiganjo Castle', 'Deduce', 'Metallic Mimic', 'Renewed Faith', 'Caves of Koilos', 'Day of Judgment', 'Novice Inspector', 'Mystic Gate', 'Sunken Hollow', 'Pillar of the Paruns', 'Hallowed Burial', 'Long Goodbye', 'Staunch Crewmate', 'Pippin, Guard of the Citadel', 'Sol Talisman', 'Ritual of Rejuvenation', 'Rem Karolus, Stalwart Slayer', 'Worst Fears', 'Burst Lightning', 'Malcolm, the Eyes', 'Ionize', 'Temple of Silence', 'Port Town', 'Dakkon, Shadow Slayer', 'Approach of the Second Sun', 'Captain Storm, Cosmium Raider', 'Secluded Steppe', 'Mox Tantalite', 'Out of Time', 'Great Train Heist', 'Torment of Scarabs', 'Hell to Pay', 'Captain Lannery Storm', 'Ojutai''s Command', 'Slick Sequence', 'Easy Prey', 'Aurelia, the Law Above', 'Painful Truths', 'Breeches, Eager Pillager', 'Reckless Lackey', 'Glacial Fortress', 'Rhys the Redeemed', 'Celestial Colonnade', 'Curse of the Cabal', 'Isolated Chapel', 'Hero of Precinct One', 'Restless Spire', 'Lost Legacy', 'Erebos''s Intervention', 'Detention Sphere', 'Kitesail Larcenist', 'Aurification', 'Taii Wakeen, Perfect Shot', 'Dovin, Grand Arbiter', 'Ajani Vengeant', 'Painful Quandary', 'Temple of Enlightenment', 'Hostage Taker', 'Sulfur Falls', 'Narset, Enlightened Exile', 'Cruel Reality', 'Angelsong', 'Temple of Deceit', 'Silent Gravestone', 'Faramir, Prince of Ithilien', 'Clifftop Retreat', 'General Ferrous Rokiric', 'Cosmos Elixir', 'Gideon Jura', 'No More Lies', 'Trespasser''s Curse'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.2 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Halana and Alena, Partners', 'Drowned Catacomb', 'Rootbound Crag', 'Glóin, Dwarf Emissary', 'Duergar Assailant', 'Renewed Faith', 'Lightning Helix', 'Taurean Mauler', 'Out of Air', 'Trespasser''s Curse', 'Thief of Sanity', 'Painful Quandary', 'Depala, Pilot Exemplar', 'Mox Tantalite', 'Lonely Sandbar', 'Phantom Interference', 'Glacial Fortress', 'Sunken Hollow', 'Fire-Lit Thicket', 'Silent Gravestone', 'Day of Judgment', 'Bitter Triumph', 'Shinka, the Bloodsoaked Keep', 'Temple of Enlightenment', 'Novice Inspector', 'Raging Ravine', 'Rimrock Knight', 'Call of the Ring', 'Burst Lightning', 'Deduce', 'Spine of Ish Sah', 'Gideon Jura', 'Lukka, Bound to Ruin', 'Mirror Entity', 'Gallia of the Endless Dance', 'Hajar, Loyal Bodyguard', 'Xenagos, the Reveler', 'Painful Truths', 'Migloz, Maze Crusher', 'Magda, Brazen Outlaw', 'Disenchant', 'Hallowed Burial', 'Bard Class', 'Curse of the Cabal', 'Lost Legacy', 'Outrageous Robbery', 'Celestial Colonnade', 'Easy Prey', 'Survival Cache', 'Disfigure', 'Hall', 'Ajani Vengeant', 'Cabaretti Courtyard', 'Torbran, Thane of Red Fell', 'Repeal', 'Temple of Deceit', 'Furycalm Snarl', 'River of Tears', 'Ritual of Rejuvenation', 'Erebos''s Intervention', 'Cruel Reality', 'Secluded Steppe', 'Long Goodbye', 'Lazav, Wearer of Faces', 'Bogardan Hellkite', 'Approach of the Second Sun', 'Temple of Silence', 'Cosmos Elixir', 'Detention Sphere', 'Sol Talisman', 'Drakuseth, Maw of Flames', 'Dovin, Grand Arbiter', 'Domri, Anarch of Bolas', 'Itzquinth, Firstborn of Gishath', 'Isolated Chapel', 'Metallic Mimic', 'Worst Fears', 'Jolene, Plundering Pugilist', 'Aurification', 'Caves of Koilos', 'Okina, Temple to the Grandfathers', 'Fetid Pools', 'Thassa''s Intervention', 'Secret Passage', 'Hostage Taker', 'Yahenni''s Expertise', 'Geological Appraiser', 'Shoot the Sheriff', 'Angelsong', 'Radha, Heart of Keld', 'Dakkon, Shadow Slayer', 'Dark Confidant', 'Out of Time', 'Port Town', 'Torment of Scarabs'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.2, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (2.4 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Novice Inspector', 'Vivid Marsh', 'Temple of Silence', 'Lightning Helix', 'Hall', 'Sol Talisman', 'Rimrock Knight', 'Cruel Reality', 'Isolated Chapel', 'Mox Tantalite', 'Long Goodbye', 'Secluded Steppe', 'Mirror Entity', 'Glacial Fortress', 'Gideon Jura', 'Furycalm Snarl', 'Erebos''s Intervention', 'Ritual of Rejuvenation', 'Cosmos Elixir', 'Port Town', 'Metallic Mimic', 'Horned Loch-Whale', 'Vivid Meadow', 'Painful Truths', 'Shriekmaw', 'Trespasser''s Curse', 'Dakkon, Shadow Slayer', 'Burst Lightning', 'Invasion of Alara', 'Torbran, Thane of Red Fell', 'Temple of Enlightenment', 'Yavimaya Coast', 'Colossal Skyturtle', 'Magda, Brazen Outlaw', 'Approach of the Second Sun', 'Disenchant', 'Caves of Koilos', 'Hostage Taker', 'Spine of Ish Sah', 'Out of Time', 'Llanowar Wastes', 'Sunken Hollow', 'Greater Tanuki', 'Assault // Battery', 'Torment of Scarabs', 'Duergar Assailant', 'Celestial Colonnade', 'Lost Legacy', 'Cemetery Desecrator', 'Drakuseth, Maw of Flames', 'Deduce', 'Lonely Sandbar', 'Easy Prey', 'Worst Fears', 'Bogardan Hellkite', 'Detention Sphere', 'Cabaretti Courtyard', 'Day of Judgment', 'Dovin, Grand Arbiter', 'Aurification', 'Renewed Faith', 'Taurean Mauler', 'Silent Gravestone', 'Painful Quandary', 'Hallowed Burial', 'Angelsong', 'Shivan Reef', 'Ajani Vengeant', 'Bramble Familiar', 'Krosan Tusker', 'Glóin, Dwarf Emissary', 'Curse of the Cabal', 'Ill-Timed Explosion', 'Depala, Pilot Exemplar', 'Survival Cache', 'Grand Coliseum', 'Temple of Deceit'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 2.4, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite

vorpal-buildbot commented 1 month ago

Exceeded slow_query limit (3.0 > 2.0) in mysql: ```

    SELECT

    d.id,
    d.finish,
    d.decklist_hash,
    cache.active_date,
    cache.wins,
    cache.losses,
    cache.draws,
    cache.color_sort,
    ct.name AS competition_type_name,
    COUNT(*) OVER () AS total

    FROM
        deck AS d

    LEFT JOIN
        competition AS c ON d.competition_id = c.id
    LEFT JOIN
        competition_series AS cs ON cs.id = c.competition_series_id
    LEFT JOIN
        competition_type AS ct ON ct.id = cs.competition_type_id

    LEFT JOIN
        deck_cache AS cache ON d.id = cache.deck_id
    LEFT JOIN deck_cache AS season ON d.id = season.deck_id
    WHERE
        (d.id IN (SELECT deck_id FROM deck_card WHERE card IN ('Spyglass Siren', 'Captain Lannery Storm', 'Shivan Reef', 'Hissing Quagmire', 'The Eternal Wanderer', 'Cosmos Elixir', 'Depala, Pilot Exemplar', 'Secluded Steppe', 'Oath of Chandra', 'Rimrock Knight', 'Duergar Assailant', 'Requisition Raid', 'Dakkon, Shadow Slayer', 'Blightning', 'Timeless Dragon', 'Wrath of God', 'Celestial Colonnade', 'Easy Prey', 'Price of Progress', 'Temple of Malady', 'Survival Cache', 'Birds of Paradise', 'Breeches, Eager Pillager', 'Woodland Cemetery', 'Commune with the Gods', 'Hagra Mauling', 'Rugged Prairie', 'Deduce', 'Phantom Interference', 'Binding Negotiation', 'Battlefield Forge', 'Lost Legacy', 'Drowned Catacomb', 'Vivid Marsh', 'Malcolm, the Eyes', 'Incinerate', 'Jace, Architect of Thought', 'Disenchant', 'Isolated Chapel', 'Kumano Faces Kakkazan', 'Long Goodbye', 'Stromkirk Noble', 'Dreadbore', 'Magda, Brazen Outlaw', 'Furycalm Snarl', 'Golgari Grave-Troll', 'Dragonskull Summit', 'Keldon Megaliths', 'Port Town', 'Gideon Jura', 'Mirror Entity', 'Trespasser''s Curse', 'Insidious Roots', 'Gideon, Ally of Zendikar', 'Sol Talisman', 'Narset of the Ancient Way', 'Secluded Courtyard', 'Yavimaya Coast', 'Mystic Gate', 'Dark Confidant', 'Path to Exile', 'Ill-Timed Explosion', 'Ajani Vengeant', 'Temple of Mystery', 'Sweltering Suns', 'Spine of Ish Sah', 'Hall', 'Flooded Grove', 'Thalia''s Lieutenant', 'Argoth, Sanctum of Nature', 'Glóin, Dwarf Emissary', 'Torbran, Thane of Red Fell', 'Cruel Reality', 'Clifftop Retreat', 'Drakuseth, Maw of Flames', 'Maestros Ascendancy', 'Aftermath Analyst', 'Eiganjo Castle', 'Hostage Taker', 'Regrowth', 'Thassa''s Intervention', 'Bogardan Hellkite', 'Kellan, Daring Traveler', 'Taurean Mauler', 'Soldier of the Pantheon', 'Sulfur Falls', 'Volatile Fault', 'Cruel Ultimatum', 'Abrade', 'Great Train Heist', 'Painful Quandary', 'Day of Judgment', 'Master of Death', 'Burst Lightning', 'Novice Inspector', 'The Reality Chip', 'No More Lies', 'Fetid Pools', 'Forsaken Miner', 'Tamiyo, the Moon Sage', 'Restless Spire', 'Ash Zealot', 'Caves of Koilos', 'Cunning Coyote', 'Phoenix of Ash', 'Mox Tantalite', 'Painful Truths', 'Approach of the Second Sun', 'Temple of Silence', 'Out of Time', 'Staunch Crewmate', 'Angelsong', 'Tainted Indulgence', 'Field of the Dead', 'Glacial Fortress', 'Frantic Scapegoat', 'Earthshaker Khenra', 'Luminarch Aspirant', 'Worst Fears', 'Lonely Sandbar', 'Forbid', 'Aurification', 'Llanowar Wastes', 'Sunken Hollow', 'Torment of Scarabs', 'Lotleth Troll', 'Renewed Faith', 'Dovin, Grand Arbiter', 'Out of Air', 'Bloodsoaked Champion', 'Shock', 'Thalia, Guardian of Thraben', 'Champion of the Parish', 'Jirina, Dauntless General', 'Lightning Helix', 'Reckless Lackey', 'Temple of Deceit', 'Captain Storm, Cosmium Raider', 'Silent Gravestone', 'Smoldering Marsh', 'Kitesail Larcenist', 'Ritual of Rejuvenation', 'Flowering of the White Tree', 'Hazoret the Fervent', 'Hallowed Burial', 'Hogaak, Arisen Necropolis', 'Erebos''s Intervention', 'Temple of Enlightenment', 'Benevolent Bodyguard', 'Oath of Teferi', 'Detention Sphere', 'Metallic Mimic', 'Irrigated Farmland', 'Curse of the Cabal', 'Search for Azcanta', 'Cabaretti Courtyard', 'Outrageous Robbery', 'Billiard Room'))) AND (TRUE)
    GROUP BY 
        d.id,
        d.competition_id, -- Every deck has only one competition_id but if we want to use competition_id in the HAVING clause we need this.
        season.season_id -- In theory this is not necessary as all decks are in a single season and we join on the date but MySQL cannot work that out so give it the hint it needs.

    HAVING
        TRUE
    ORDER BY
        active_date DESC, d.finish IS NULL, d.finish

```

[] (slow_query, 3.0, mysql)

Reported on decksite by mysql-perf

Location Hash: 7a146c3cf11d18b4615020ae73ef9b1e6be09489

Labels: decksite