A Shot of SQLEspresso

SQL Blogs by Monica Morehouse (Rathbun)

  • Home
  • Session Downloads
  • Event Calendar
  • PASS
    • Hampton Roads SQL User Group
    • SQL Saturday
    • PASS WIT VC
  • DCAC
  • Contact Me
    • Disclaimer
  • Home
  • Session Downloads
  • Event Calendar
  • PASS
    • Hampton Roads SQL User Group
    • SQL Saturday
    • PASS WIT VC
  • DCAC
  • Contact Me
    • Disclaimer

No Widgets found in the Sidebar Alt!

  • Back to Basics,  Performance Tuning,  Posts with Scripts

    Quick Tip: Remove CONVERT\CAST from your WHERE\JOIN clauses

    March 28, 2022 /

    Quick Tip Remove CONVERT/CAST from your WHERE clauses and JOINS when comparing to variables of different data types. Set their data types to match your table definitions before using them as a filter. Optimizing your queries this way will greatly reduce the amount of CPU time, reads, and I/O generated in your queries and allow your code to take better advantage of indexes. Example We are going to create a very simple stored procedure called ConvertExample. In this procedure we will see two things. One, the first procedure we create will declare two variables as VARCHAR( MAX) data types, then in the WHERE clause it will convert a table column…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    Back to Basics: Why not parameterize?

    December 23, 2015

    SSRS Report Won’t Render in VS Preview

    April 12, 2016

    Summit Submission Feedback Response

    June 28, 2016
  • Performance Tuning

    SQL Index Creation Using DROP EXISTING= ON

    February 17, 2021 /

    When you are making changes to an existing Non-Clustered index SQL Server provides a wide variety of options. One of the more frequently used methods is DROP EXISTING; in this post you will learn all about that option. This option automatically drops an existing index after recreating it, without the index being explicitly dropped. Let us take a moment understand the behavior of this choice. DROP EXSITING=ON which is my preferred method, will DROP the current index only after it finishes creating and building the index with the new definition. The pitfall is that if the index does not exist, you will get an error and must create it without the…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    What does this little check box do? Query Governor SQL Database Setting

    September 13, 2017

    The Case for Scooby-Dooing: Solving SQL Server Mysteries Like a Pro– Scooby Dooing Episode 8

    October 8, 2025

    Invest in Yourself Stop Making Excuses

    October 22, 2019
  • Azure

    Caution When Dropping Unused Indexes on an Azure SQL Database

    August 12, 2020 /

    Index Maintenance is an important aspect of database health. Above and beyond regular index rebuilds and reorganizations it is important to understand the usage of the indexes on your database. Cleaning up unused indexes can save a lot of overhead on Insert/Update/Delete operations. To achieve that goal, I typically run a script like the one shown below and check out whether or not an index has had any seeks or scans against it as a starting point in my cleanup regiment. SELECT d.name,        OBJECT_NAME(i.[object_id]) AS [ObjectName],        i.[name] AS [IndexName],        s.user_seeks,        s.user_scans FROM sys.indexes AS i     LEFT OUTER JOIN sys.dm_db_index_usage_stats AS s         ON i.[object_id] =…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    What does this little check box do? Query Governor SQL Database Setting

    September 13, 2017

    Eliminating Unnecessary DELETE Operations

    February 27, 2025

    The Gang vs. Jason: Unmasking JSON’s Secrets in SQL Server 2025- Scooby Dooing Episode 7

    October 1, 2025
  • Performance Tuning

    Coding Standards Gone Bad in SQL Server

    April 21, 2020 /

    Knowing your data is very important when it comes to writing code. Now I’ll admit that I am very far from being a developer, however as a DBA, I spend much of my day’s performance tuning code. In doing so, I get to see many ways code can introduce excess database reads. One of the most recent things I have come across has to do with NULLs. The environment I was working in had no default values in their table design, so it was riddled with NULL values. Over the years they had implemented coding standards to try and mitigate these NULL values within their code. In every column search…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    What is Automatic Tuning in Azure SQL Database

    August 28, 2018

    The FAST number_rows Query Hint

    October 16, 2019

    What SQL Server Performance & Management Tools Do I Use?

    September 4, 2019
  • Performance Tuning

    In Memory Table Indexes

    January 22, 2020 /

    Now that I have written about In-Memory Tables and Migrating to In-Memory tables, let’s look at indexes and how they are created and how they work within those tables. As you can imagine indexes, called memory optimized indexes are different for these types of tables, so let’s see just how different that are from regular tables. Before we dive into this subject it is VERY important to note the biggest differences. First,  If you are running SQL Server 2014 memory optimized indexes MUST be created when the table is created or migrated. You cannot add indexes in an existing table without dropping and recreating the table. After 2016 you now…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    SQL Server Data Collection and Management Data Warehouse

    October 3, 2018

    Template Explorer Gold Mine in SQL Server Management Studio

    March 27, 2018

    SSRS Report Won’t Render in VS Preview

    April 12, 2016
  • Indexes

    Are My SQL Server Indexes Being Used?

    August 28, 2019 /

    Indexes can be incredibly beneficial to your database performance; however, they do come with a cost—indexes both consume storage space and affect insert performance. Therefore, it is important as part of your index maintenance procedures that you periodically check to see if your indexes are being used. Many times, indexes are created in the belief they are needed but in fact they are never used. You can reduce that IO overhead on inserts when you remove unnecessary indexes. How Do You Find Them? Glenn Berry (B|T) has a fantastic script as part of his diagnostic scripts (link) that helps identify index utilization. In his diagnostic scripts it is listed as…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    The Mystery of the Locked-Up Database -Scooby Dooing Episode 6

    September 24, 2025

    Hide and Group Columns in SSRS Using a Parameter

    December 9, 2016

    Attending Summit as a New Leader

    November 6, 2015
  • Indexes,  Performance Tuning

    Understanding Columnstore Indexes in SQL Server Part 3

    July 17, 2019 /

    My last two blogs were on understanding columnstore and creating columnstore indexes. In this post, I will touch on one last topic, when to use columnstore indexes. As noted in my prior posts these indexes are designed for large data warehouse workloads, not normal OLTP workload tables. As with any index design it is important to know your data and what you will be using the data for. Be sure to look to what types of queries you will be running against it, as well as how the data is loaded and maintained. Let’s look at a few questions you should ask yourself before deciding to implement a columnstore index.…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    Approximate COUNT DISTINCT

    January 3, 2019

    This Idera ACE Has Been Busy

    August 23, 2016

    How Your Hypervisor Can Impact Your CPU

    March 6, 2019
  • Indexes,  Performance Tuning

    Understanding Columnstore Indexes in SQL Server Part 2

    July 10, 2019 /

    In my last blog I explained what a columnstore index is, in this blog, we will dive into creating a clustered columnstore index and look at the performance differences the index can make. Let’s get started. Using AdventureworksDW2016CTP3 we will work with the FactResellerSalesXL table which has 11.6 million rows in it. The simple query we will use as a demo just selects the ProductKey and returns some aggregations grouping them by the different product keys. First, we will run the query with no existing columnstore index and only using the current clustered rowstore (normal) index. Note that I turned on SET STATISTICS IO and TIME on. These two SET…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    Free Training 24HOP

    April 18, 2018

    Master of None

    October 8, 2015

    Attending Summit as a New Leader

    November 6, 2015
  • Indexes,  Performance Tuning

    Understanding Columnstore Indexes in SQL Server Part 1

    June 26, 2019 /

    Recently I reviewed filtered indexes, this time let’s look at columnstore indexes. These indexes are very useful for data warehouse workloads and large tables. They can improve query performance by a factor of 10 in some cases, so knowing and understanding how they work is important if you work in an environment with larger scaled data. Now, I admit when these first were introduced in SQL Server 2012 I found them very intimidating (additionally, you couldn’t update them directly). For me, anytime you say columnstore, my mind tends to set off alarms saying wait stay away, this is too complicated. So, in this post I am going to try and…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    Eliminating Unnecessary DELETE Operations

    February 27, 2025

    Comparing Execution Plans

    June 19, 2019

    Query Predicates in SQL Server

    May 24, 2018
  • Back to Basics,  Indexes

    Filtered Index Basics

    May 22, 2019 /

    In this post, we continue with another beginner’s blog of database features that may be unknown to many. Let’s take a look at filtered indexes. Many database administrators are fully aware of the power of indexes and know how to create them. However, I find that some have yet to dive into fully optimizing their indexes and taking advantage of what filtered indexes has to offer. What is a filtered index? Simply it’s an index with a where clause. It is an optimized non clustered index that can be narrowed down in scope to better fit a subset of data. Example being date ranges, years, non NULLs or specific product…

    Read More
    Monica Morehouse (Rathbun)

    Related Posts

    The FAST number_rows Query Hint

    October 16, 2019

    Add Azure Cache for Redis to Your Azure SQL Performance Tuning Toolbox

    July 14, 2021

    It’s time to speak again!

    December 1, 2015
12

About Me

Monica Morehouse (Rathbun)

Microsoft MVP, Performancing Tuning Expert, Leader Hampton Roads SQL Server User Group, Read More…

Consulting

Sessions List

Favorite Tidbits

  • Reminder to Developers

Topic Categories

  • Azure
  • Back to Basics
  • Configurations
  • Data Masking
  • DevOps
  • Encryption
  • Idera Ace
  • Important Links
  • Indexes
  • Lone DBA
  • Misc
  • MVP
  • New SQL Version
  • Performance Tuning
  • Posts with Scripts
  • Problems & Solutions
  • Quick and Dirty
  • Security
  • Speaking
  • SQL Family
  • SQLSaturday
  • SSRS
  • Summit
  • Training
  • TSQL Tuesday
  • Uncategorized

Top Posts & Pages

  • Resizing Tempdb (When TEMPDB Wont Shrink)
    Resizing Tempdb (When TEMPDB Wont Shrink)
  • What’s a Key Lookup?
    What’s a Key Lookup?
  • It's All in the Name, Index Naming Conventions
    It's All in the Name, Index Naming Conventions
  • Tempdb Performance Improvements in SQL Server 2022 are Dramatic
    Tempdb Performance Improvements in SQL Server 2022 are Dramatic
  • The Mystery of the Locked-Up Database -Scooby Dooing Episode 6
    The Mystery of the Locked-Up Database -Scooby Dooing Episode 6
  • Understanding Columnstore Indexes in SQL Server Part 2
    Understanding Columnstore Indexes in SQL Server Part 2
  • Memory Optimized Tables in SQL Server
    Memory Optimized Tables in SQL Server
  • The Case for Scooby-Dooing: Solving SQL Server Mysteries Like a Pro– Scooby Dooing Episode 8
    The Case for Scooby-Dooing: Solving SQL Server Mysteries Like a Pro– Scooby Dooing Episode 8
  • How to get started with Always Encrypted for Beginners Part 1
    How to get started with Always Encrypted for Beginners Part 1
  • How to get started with Always Encrypted for Beginners Part 3: One Two Punch
    How to get started with Always Encrypted for Beginners Part 3: One Two Punch
Graceful Pro Theme by Optima Themes - 2026 ©
 

Loading Comments...