2023-10-16 |
Don’t use DISTINCT as a “join-fixer”
|
2023-04-20 |
One use case for NOT using schema prefixes
|
2023-02-23 |
Find 40 Problems in this Stored Procedure
|
2023-01-10 |
T-SQL Tuesday #158 : Worst Practices
|
2022-11-08 |
T-SQL Tuesday #156 : Production Code
|
2022-09-13 |
T-SQL Tuesday #154 : SQL Server 2022 (anti-pattern XE)
|
2022-07-12 |
T-SQL Tuesday #152 : Soapboxing (on leading commas)
|
2022-06-21 |
Why shouldn't I create 15,000 partitions in advance?
|
2022-06-14 |
T-SQL Tuesday #151 : Controversial Coding Conventions
|
2022-04-06 |
Why I always start CTEs with a statement terminator
|
2022-03-01 |
FORMAT is a convenient but expensive function, part 2
|
2022-02-16 |
FORMAT is a convenient but expensive function, part 1
|
2021-10-21 |
Bad Habits : Avoiding NULLs
|
2021-10-14 |
Bad Habits : Abusing bit columns
|
2021-10-04 |
Yes, data type names can still be case sensitive
|
2021-09-08 |
Why I don't like the WHILE (1=1) pattern
|
2021-09-01 |
Finding problematic NOLOCK patterns – Part 4
|
2021-08-18 |
Finding problematic NOLOCK patterns – Part 3
|
2021-08-03 |
Finding problematic NOLOCK patterns – Part 2
|
2021-07-28 |
Finding problematic NOLOCK patterns – Part 1
|
2021-07-01 |
Deprecated features, part 3 : text / ntext / image
|
2021-03-15 |
Deprecated features, part 2 : SQL Server Profiler
|
2021-03-04 |
How SQL Server handles the date format YYYY-MM-DD
|
2021-02-22 |
Deprecated features, part 1 : sysprocesses
|
2020-05-12 |
Bad Habits to Kick : relying on undocumented behavior
|
2020-04-28 |
Video : Datetime shorthand (and other tricks)
|
2020-04-21 |
Video : Using BETWEEN for date range queries
|
2020-04-21 |
Video : Regional datetime formats
|
2020-04-16 |
Video : Date/time data type guidance
|
2020-04-06 |
Creating a date dimension or calendar table in SQL Server
|
2020-02-04 |
Use caution with sys.dm_db_database_page_allocations
|
2019-09-12 |
Bad Habits to Kick : avoiding the schema prefix
|
2019-08-08 |
How to Alter User Defined Table Type in SQL Server
|
2019-07-11 |
Four SQL Server Syntax Rules I Always Follow
|
2019-06-27 |
Simplify Date Period Calculations
|
2019-06-18 |
NOLOCK Anomalies, Issues and Inconsistencies
|
2019-05-08 |
Five Things I Wish I Knew When I Started My SQL Server Career
|
2019-01-29 |
Make SQL Server DMV Queries Backward Compatible
|
2019-01-11 |
Four ways to improve scalar function performance
|
2018-12-26 |
Using T-SQL to find events that overlap (or don't) in SQL Server
|
2018-11-12 |
Improve Performance in SQL Server 2019 with Scalar UDF Inlining
|
2018-10-22 |
Execute a Command in the Context of Each Database Part 2
|
2018-10-04 |
Execute a Command in the Context of Each Database using sp_ineachdb
|
2018-07-24 |
Making a more reliable and flexible sp_MSforeachdb
|
2018-07-24 |
Use Caution with SQL Server's MERGE Statement
|
2018-07-17 |
Be Careful with Key Order in Missing Index Recommendations
|
2018-07-10 |
T-SQL Tuesday #104: Code I Would Hate to Live Without
|
2018-02-28 |
Do tabs vs. spaces affect performance in SQL Server?
|
2017-11-15 |
DateTime Best Practices
|
2017-06-14 |
Performance Myths : Oversizing string columns
|
2017-05-15 |
Safeguard to Avoid Costly Mistakes for UPDATE or DELETE Statements in SSMS
|
2017-03-17 |
Performance Myths : Clustered vs. Non-Clustered Indexes
|
2017-03-09 |
Harmful, Pervasive SQL Server Performance Myths
|
2017-02-08 |
Follow-up #1 on leading wildcard seeks
|
2017-02-03 |
One way to get an index seek for a leading %wildcard
|
2017-01-31 |
Benefits of SCHEMABINDING in SQL Server
|
2017-01-26 |
Performance Surprises and Assumptions : GROUP BY vs. DISTINCT
|
2016-11-17 |
Top 5 Reasons for Wrong Results in SQL Server
|
2016-11-09 |
Can comments hamper stored procedure performance?
|
2016-11-02 |
#BackToBasics : CAST vs. CONVERT
|
2016-10-04 |
#BackToBasics : Why I use lower case for data type names (now)
|
2016-10-04 |
Avoid ORDER BY in views
|
2016-09-06 |
Pattern Matching : More Fun When I Was a Kid
|
2016-09-01 |
#BackToBasics : Naming Stored Procedures
|
2016-08-03 |
#BackToBasics : Great Debates : Unicode
|
2016-07-11 |
Paying Attention to Estimates
|
2016-06-01 |
#BackToBasics : An Updated "Kitchen Sink" Example
|
2016-04-11 |
Performance Surprises and Assumptions : DATEADD()
|
2016-04-06 |
#BackToBasics : Dating Responsibly
|
2016-02-03 |
#BackToBasics : The "Runaway" Query
|
2016-01-18 |
Subjectivity : Naming Standards
|
2016-01-06 |
#BackToBasics : Common Table Expressions (CTEs)
|
2015-11-19 |
Phase out CONTEXT_INFO() in SQL Server 2016 with SESSION_CONTEXT()
|
2015-11-10 |
T-SQL Tuesday #72 : Models Gone Wild!
|
2015-10-08 |
Maintaining a grouped running MAX (or MIN)
|
2015-08-07 |
Bad Habits : Being CarELesS about cAsE
|
2015-06-29 |
FORMAT() is nice and all, but…
|
2015-06-05 |
How not to call Hekaton natively-compiled stored procedures
|
2015-06-01 |
Protecting Yourself from SQL Injection in SQL Server – Part 2
|
2015-05-27 |
Protecting Yourself from SQL Injection in SQL Server – Part 1
|
2015-04-07 |
Bad Habits : Using MDF/LDF Files as 'Backups'
|
2015-03-12 |
Best Practices : Properly referencing columns
|
2015-02-26 |
Should I use NOLOCK against #temp tables?
|
2015-02-19 |
Developers need to know "DBA stuff" – and vice-versa
|
2015-02-13 |
Fun with THROW : Avoid % and use semi-colons!
|
2015-01-06 |
Bad habits : Focusing only on disk space when choosing keys
|
2014-10-30 |
Bad habits : Counting rows the hard way
|
2014-10-22 |
Bad habits : Another case for semi-colons and schema prefix
|
2014-10-08 |
Bad habits : Using AttachDBFileName
|
2014-09-30 |
Bad habits : Clinging to old compatibility levels
|
2014-09-24 |
Bad habits : Putting NOLOCK everywhere
|
2014-09-22 |
Stop making SQL Server do your dirty work
|
2014-09-16 |
Bad habits : Looking for optimizations in all the wrong places
|
2014-09-04 |
Bad habits : Using (certain) metadata "helper" functions
|
2014-07-08 |
T-SQL Tuesday #56 : SQL Server Assumptions
|
2014-06-12 |
Dirty Secrets of the CASE Expression
|
2014-02-24 |
Avoid using NOLOCK on UPDATE and DELETE statements
|
2014-01-23 |
For the last time, NO, you can't trust IDENT_CURRENT()
|
2013-12-19 |
Improve Efficiency by Switching to INSTEAD OF Triggers
|
2013-09-26 |
Generate random integers without collisions
|
2013-09-05 |
Performance Surprises and Assumptions : DATEDIFF
|
2013-08-14 |
Performance Surprises and Assumptions : Arbitrary TOP 1
|
2013-07-26 |
Follow-up on Summer Performance Palooza 2013 (Habits & Practices Q&A)
|
2013-06-06 |
Don't just blindly create those 'missing' indexes!
|
2013-05-17 |
Another argument for stored procedures
|
2013-03-13 |
Break large delete operations into chunks
|
2013-01-18 |
Generate a set or sequence without loops – part 3
|
2013-01-17 |
Generate a set or sequence without loops – part 2
|
2013-01-16 |
Generate a set or sequence without loops – part 1
|
2012-10-15 |
Is the sp_ prefix still a no-no?
|
2012-09-20 |
What impact can different cursor options have?
|
2012-09-13 |
How much impact can a data type choice have?
|
2012-08-16 |
Splitting Strings : Now with less T-SQL
|
2012-07-24 |
SQL Server Queries With Hints
|
2012-04-30 |
Deciding between COALESCE and ISNULL
|
2012-04-24 |
Minimize plan cache bloat
|
2012-02-28 |
Checking for potential constraint violations before entering TRY / CATCH logic
|
2012-02-27 |
Bad Habits to Kick : Believing everything you hear or read
|
2012-01-26 |
Bad Habits to Kick : Thinking a WHILE loop isn't a CURSOR
|
2012-01-23 |
Bad Habits to Kick : Using AS instead of = for column aliases
|
2011-12-13 |
T-SQL Tuesday #25 : T-SQL Tips 'n' Tricks
|
2011-11-03 |
The case against INFORMATION_SCHEMA views
|
2011-10-19 |
What do BETWEEN and the devil have in common?
|
2011-09-20 |
Bad Habits to Kick : Using shorthand with date/time operations
|
2011-09-17 |
Bad Habits to Kick : Using EXEC() instead of sp_executesql
|
2011-08-10 |
T-SQL Tuesday #21 : Crap Code
|
2011-07-12 |
T-SQL Tuesday #20 : T-SQL Best Practices
|
2011-01-26 |
Avoid External Dependencies in SQL Server Triggers
|
2010-09-09 |
Use Consistent SQL Server Naming Conventions
|
2010-08-22 |
Bad Habits to Kick : Inconsistent naming
|
2010-03-08 |
Bad Habits to Kick : ignoring I/O
|
2010-03-07 |
Bad Habits to Kick : creating the uber-view
|
2010-02-22 |
Bad Habits to Kick : using ancient copies of Books Online
|
2010-02-16 |
Bad Habits to Kick : inconsistent table aliasing
|
2010-02-12 |
Bad Habits to Kick : ignoring the principle of least privilege
|
2010-02-10 |
Bad Habits to Kick : blind SQL Server installs
|
2010-02-08 |
Bad Habits to Kick : putting an IDENTITY column on every table
|
2010-01-14 |
When you don't follow your own 'bad habits' advice…
|
2009-10-16 |
Bad Habits to Kick : mis-handling date / range queries
SQL Server training provider Webucator created a video based on this post.
|
2009-10-14 |
Bad Habits to Kick : using the visual designers
|
2009-10-14 |
Bad Habits to Kick : using alias types
|
2009-10-12 |
Bad Habits to Kick : abusing triggers
|
2009-10-12 |
Bad Habits to Kick : choosing the wrong data type
|
2009-10-11 |
Bad Habits to Kick : making assumptions about IDENTITY
|
2009-10-11 |
Bad Habits to Kick : inconsistent naming conventions
|
2009-10-10 |
Bad Habits to Kick : using SELECT * / omitting the column list
|
2009-10-09 |
Bad Habits to Kick : declaring VARCHAR without (length)
|
2009-10-09 |
Bad Habits to Kick : using SELECT or RETURN instead of OUTPUT
|
2009-10-09 |
Bad Habits to Kick : using dashes and spaces in entity names
|
2009-10-08 |
Bad Habits to Kick : using old-style JOINs
|
2009-10-08 |
Bad Habits to Kick : using table aliases like (a, b, c) or (t1, t2, t3)
|
2009-10-07 |
Bad Habits to Kick : using loops to populate large tables
|
2009-10-06 |
Bad Habits to Kick : ORDER BY ordinal
|
2009-09-03 |
Ladies and gentlemen, start your semi-colons!
|
2008-10-30 |
My stored procedure best practices checklist
|
2008-03-20 |
Which to use: "<>" or "!="?
|