DROP TABLE IF EXISTS t1, t11, t12, t21, t22; CREATE TABLE t1 ( a int(11) NOT NULL, b int(11) NOT NULL, c datetime default NULL, PRIMARY KEY (a), KEY idx_bc (b,c) ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (406989,67,'2006-02-23 17:08:46'),(150078,67,'2005-10-26 11:17:45'),(406993,67,'2006-02-27 11:20:57'),(245655,67,'2005-12-08 15:59:08'),(406994,67,'2006-02-27 11:26:46'),(256,67,NULL),(398341,67,'2006-02-20 04:48:44'),(254,67,NULL),(1120,67,NULL),(406988,67,'2006-02-23 17:07:22'),(255,67,NULL),(398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'),(245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'),(245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'),(127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'),(245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'),(154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'),(223456,67,NULL),(4101,67,NULL),(1133,67,NULL),(406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'),(148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'),(154503,67,'2005-10-28 11:52:38'); create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc; create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc; create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc; create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc; select count(*) from t11 order by 1; select count(*) from t12 order by 1; select count(*) from t21 order by 1; select count(*) from t22 order by 1; select * from t11 order by 1; select * from t12 order by 1; select * from t21 order by 1; select * from t22 order by 1;