Szopen Xiao

Mysql where 使用索引相关备注

2018-08-22

以下结论在MariaDB 10.2.16下验证:

  1. 当字段COLUMN_NAME是索引,且可为NULL时,在where 语句中使用COLUMN_NAME IS NULL,将会使用索引;COLUMN_NAME IS NOT NULL任何情况下都不会使用索引
  2. 当字段不可为NULL时,COLUMN_NAME IS NULLCOLUMN_NAME IS NOT NULL任何情况下都不会使用索引
  3. COLUMN_NAME字段为索引时,在where语句中COLUMN_NAME = ''COLUMN_NAME != ''均不会使用索引;COLUMN_NAME > ''将会使用索引
  4. COLUMN_NAME字段为索引,且可为NULL时,COLUMN_NAME IS NULL OR COLUMN_NAME = ''将不会使用索引
  5. 字段为数字索引时, COLUMN_NAME != 1COLUMN_NAME<>1效果相同
  6. COLUMN_NAME字段为索引,可为NULL时,COLUMN_NAME IS NOT NULL OR COLUMN_NAME >0将不会使用索引,OR条件顺序不影响效果,都不使用索引
  7. COLUMN_NAME字段为索引时,COLUMN_NAME >0 OR != ''时,将会使用索引使用
comments powered by Disqus