Will anything ever be equal to NULL in a SELECT query?

  SELECT *
  FROM sometable
  WHERE somecolumn = NULL;

I have a real-life query like this:

  SELECT *
  FROM sometable
  WHERE somecolumn = NULL OR somecolumn = 'abc';

The 'sometable' contains about 40 million records and in this query, it appears that the where clause is doing a sequential scan of the table to find a condition where 'somecolumn' = NULL. Shouldn't the query parser be smart enough to rewrite the above query like this:

  SELECT *
  FROM sometable
  WHERE FALSE OR somecolumn = 'abc';

And therefor use the index I have on 'somecolumn'? When I manually rewrite the query, I get the performance I expect but when I leave it as it was, it's 100 times slower.

What's so special about NULL?

-- Dante

----------
D. Dante Lorenso

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to