以下结论在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 != ''时,将会使用索引使用