DMs often drag out their mysteries for too long. Like, way too long. If the players' actions are making the mystery "too short", that might actually be a good thing. Mysteries are meant to be solved.
That said, if you feel like the players are underleveled--award XP for solving mysteries!
For Dragon Heist in particular, you can always introduce a second (or even third) faction to complicate matters. That's what I've done in the heavily modified version of Dragon Heist that I'm currently running. And check out the Alexandrian Remix of Dragon Heist on thealexandrian dot net if you haven't already done so. It will make your game better.
I'm using the milestone XP for Dragon Heist. I thought it was the only way there would be a chance characters could be of appropriate level to deal with things.
I can add a couple of villains to the mix, but there comes a point of no return in the module. And running it in Roll20 gets extraordinarily confusing, as it only loads information about the villain you choose, and it's loaded in out of order.