Reads execution plans
Not guesses at them. The plan says which index was used, where the scan happened and where the row estimate was wrong.
The engineer who reads the execution plan. Schema design, indexing, query rewriting, migrations that run online, and a reporting layer that gives two people asking the same question the same number.
A week of database work routinely does more for response time than a quarter of application optimisation, because the slow part is usually one query nobody has looked at.
Not guesses at them. The plan says which index was used, where the scan happened and where the row estimate was wrong.
And removes the four that are never used, because every index makes writes slower and somebody added them during a panic in 2021.
Often the fix is not an index. It is a correlated subquery that should have been a join, or a function on a column that made an index unusable.
Online index builds, batched backfills, and a change split into steps so that nothing holds a lock for long.
Read replicas and defined views, so analysts are not querying production and inventing their own definition of revenue.
Nobody on the bench knows all of this. We shortlist against what your problem actually needs, and tell you where the gaps are.
No algorithm puzzles. Every exercise below is a task this role does in a normal week, and we watch the method more than the answer.
Eight seconds on a table with forty million rows. We watch whether they read the plan before proposing anything.
Add a non-null column to a large busy table with no downtime. The steps, in order, with the rollback.
A table with eleven indexes. Which are redundant, which are unused, and what does removing them cost.
When did you last restore a backup. An uncomfortable number of experienced people have never tested one.
You interview every candidate we put forward, so these are yours to use. They separate somebody who has run this in production from somebody who interviews well.
Gets the execution plan against realistic data volume. Will not propose a fix before seeing where the time actually goes.
Suggests an index immediately. Sometimes right by luck, and it teaches the team that database work is guesswork.
In steps. Add nullable, backfill in batches with pauses, add the constraint, then start writing to it. Knows which of these locks and for how long on the engine in question.
ALTER TABLE in one statement. Fine on a small table, and a multi-minute outage on a big one, discovered at the worst possible moment.
When a read pattern is proven expensive and the duplication has a clear owner keeping it consistent. Treats it as a considered trade rather than a default.
Denormalises early for speed. Now there are two copies of the truth and no process for keeping them equal.
From a replica, through defined views, with the definitions written down. Has seen what happens when two dashboards disagree about revenue.
They query production directly. It is a performance problem and a correctness problem at the same time.
No, and we prefer not to have it. A restored copy with realistic data volume is enough for almost all of this work. We will ask for read access to query plans and statistics, which is a much smaller thing to grant.
Then we say so, and roughly a third of the time that is the answer. Slow queries are often a symptom of an application asking for data badly rather than a database serving it badly. Knowing which is worth the week on its own.
Yes, and the honest answer is usually Postgres unless you have a specific reason. What we will not do is recommend a migration to solve a problem that an index would fix.
Thirty minutes, and a shortlist within a day. If a sql / database developer is the wrong hire for what you described, you will hear that instead.
Either one reaches Umer directly. No forms sitting in a queue.