Search code examples
sqldatabaseoracledatabase-performancequery-performance

How do NULL values affect performance in a database search?


In our product we have a generic search engine, and trying to optimze the search performance. A lot of the tables used in the queries allow null values. Should we redesign our table to disallow null values for optimization or not?

Our product runs on both Oracle and MS SQL Server.


Solution

  • In Oracle, NULL values are not indexed, i. e. this query:

    SELECT  *
    FROM    table
    WHERE   column IS NULL
    

    will always use full table scan since index doesn't cover the values you need.

    More than that, this query:

    SELECT  column
    FROM    table
    ORDER BY
            column
    

    will also use full table scan and sort for same reason.

    If your values don't intrinsically allow NULL's, then mark the column as NOT NULL.