See the real costs of SELECT * in production code: lost covering indexes, lookups, stale view metadata, broken inserts and wider results.
Inclusive End Dates: Why BETWEEN Misses the Last Day
Inclusive end dates describe whole calendar days, while BETWEEN compares the exact supplied endpoints. A date endpoint becomes midnight when compared with timestamp rows. A guarded disposable fixture makes the boundary conditions explicit.
Keyset Paging: Continue After a Date and ID Cursor
Keyset paging continues after a saved ordering key instead of counting past an offset. A date and unique ID together keep equal-date rows in the sequence. A guarded disposable fixture makes the boundary conditions explicit.
Storing Percentages: 0.15 or 15, and How to Tell Them Apart
Storing percentages starts with a declared unit. Fractional rates and percentage points require different conversions, even when both pass a range check. Use named columns, explicit boundaries and a guarded disposable fixture.
Replacing Old Syntax in Legacy T-SQL
Modernize legacy T-SQL by replacing old joins, TEXT columns, and fragile RAISERROR forms with clear, tested alternatives.
Stored Procedure Optimization Tips That Still Matter
Stored Procedure Optimization comes down to a short list of habits you can test on your own server. This post builds one badly written procedure and one good one on a small orders table, then measures the difference in logical reads. It also covers parameter sniffing, the sp_ prefix, short transactions and error handling.
SQL SERVER – Questions and Answers with Database Administrators
While hiring Database Administrators and senior developers for a large project, we discussed many interesting questions. Here are some, with my own views.







