DATABASE ENGINEERING

The layer everything else depends on, done right.

SQL Server schema design, query tuning and indexing — built correctly the first time, or fixed when an existing database is buckling under real traffic. If your app is slow, the cause is almost always here: a few queries and some missing indexes, not the hardware. Remote, worldwide.

Illustration of a developer tuning SQL Server performance: a database stack, a speed gauge in the fast zone and a highlighted query row

Design it right, or make the slow one fast.

Two kinds of work: building a database that stays fast as it grows, and rescuing one that's already grinding. Here's what each covers.

MOST REQUESTED

Performance tuning

Find the queries actually costing you — missing indexes, N+1 patterns, blocking and stale statistics — and fix them, cheapest change first.

DESIGN

Schema & data modelling

Tables, relationships and constraints designed so the data stays correct and the queries stay simple as the app grows.

INDEXING

Indexing strategy

The right indexes for how the app actually queries — not one per column, and not none. Measured against real execution plans.

LOGIC

Stored procedures & T-SQL

Procedures, functions and triggers written to be readable and fast — with set-based logic instead of row-by-row loops.

MIGRATIONS

Migrations, zero-downtime

Schema changes and data migrations planned so they ship without taking the system offline or risking the data.

AUDIT

Database health audits

A structured review of a struggling database — indexes, queries, blocking and growth — with a prioritised fix list you can act on.

INCLUDED

What a database engagement includes

Whether it's a fresh design or a rescue, the work is measured, not guessed — every change justified by an execution plan or a metric.

  • Schema & relationship design (or review)
  • Query tuning against real execution plans
  • Indexing strategy & cleanup of unused indexes
  • Stored procedures, functions & triggers
  • Zero-downtime migration planning
  • Reporting & analytics queries
  • A prioritised health-audit report
  • Before / after numbers, so the win is provable
SQL Server · T-SQL · Dapper · Entity Framework Core
WHY ME

Someone who lives in the whole stack

A lot of "slow database" problems are really application problems — how the code queries the data. Because I build the backend too, I fix the real cause, not just the symptom.

  • I see the app and the database as one system
  • N+1 and ORM traps caught at the source
  • Fixes ranked cheapest-and-safest first
  • No "buy a bigger server" as the first answer
  • Clear before / after so you know it worked
  • You keep every script and the full report

From "it's slow" to "it's fixed", in five steps.

01

Understand

What's slow, when, and for whom. We separate a database problem from an application one before touching anything.

02

Measure

Execution plans, wait stats and the actual expensive queries — the diagnosis comes from data, not hunches.

03

Fix

Indexes, query rewrites and schema changes, cheapest and safest first, each one validated against the plan.

04

Verify

Re-measure under realistic load and show the before / after numbers, so the improvement is provable, not claimed.

05

Hand over

You get every script, the audit report and a short list of what to watch as the data keeps growing.

Questions about database work

Can you speed up a database without changing the application?
Often, yes. A large share of real-world slowness is missing or wrong indexes, statistics that are out of date, and a handful of queries doing far more work than they need to — all fixable at the database layer. Where the application is generating the bad queries, that has to change too, and I will tell you which situation you are in.
How do you find what is actually slow?
By measuring rather than guessing: the queries burning the most total time, the ones reading far more rows than they return, and what is actually being waited on. The diagnostic queries I start with are written up here.
Will I need downtime for index changes?
Usually not. Most index work can be done online, and anything that genuinely needs a window is flagged in advance with a rollback plan rather than sprung on you. Nothing goes near production without a way back.
Would it be cheaper to just buy a bigger server?
Sometimes, and if that is genuinely the answer I will say so. But hardware hides the problem rather than fixing it: a query scanning ten million rows still scans ten million rows on a faster machine, and you pay for that server every month from then on.

Database slow, or starting fresh?

Tell me what's happening — the app is crawling, or you're designing something new. You'll get an honest read on the cause and a clear quote, with no pressure.

Get a quote →