以下结论在MariaDB 10.2.16
下验证:
- 当字段
COLUMN_NAME
是索引,且可为NULL
时,在where
语句中使用COLUMN_NAME IS NULL
,将会使用索引;COLUMN_NAME IS NOT NULL
任何情况下都不会使用索引 - 当字段不可为
NULL
时,COLUMN_NAME IS NULL
与COLUMN_NAME IS NOT NULL
任何情况下都不会使用索引 - 当
COLUMN_NAME
字段为索引时,在where
语句中COLUMN_NAME = ''
和COLUMN_NAME != ''
均不会使用索引;COLUMN_NAME > ''
将会使用索引 - 当
COLUMN_NAME
字段为索引,且可为NULL
时,COLUMN_NAME IS NULL OR COLUMN_NAME = ''
将不会使用索引 - 字段为数字索引时,
COLUMN_NAME != 1
和COLUMN_NAME<>1
效果相同 - 当
COLUMN_NAME
字段为索引,可为NULL
时,COLUMN_NAME IS NOT NULL OR COLUMN_NAME >0
将不会使用索引,OR
条件顺序不影响效果,都不使用索引 - 当
COLUMN_NAME
字段为索引时,COLUMN_NAME >0 OR != ''
时,将会使用索引使用