MySQL IS NULL优化

时间:2019-11-20 08:52:31  来源:igfitidea点击:

MySQL对IS NULL运算符进行优化的方式与对equal(=)运算符进行优化的方式相同。

例如,MySQL使用IS NULL运算符搜索NULL时使用索引,如以下查询所示:

SELECT 
    customerNumber, 
    salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;

请参阅查询的说明:

EXPLAIN SELECT 
    customerNumber, 
    salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;

MySQL还可以针对组合col = value或col IS NULL进行优化,请参见以下示例:

EXPLAIN SELECT 
    customerNumber,
    salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber = 1370 OR
    salesRepEmployeeNumber IS NULL;

在此示例中,当应用优化时,EXPLAIN显示ref_or_null。

如果您的键包含两列或更多列,则MySQL可以对任何键部分执行优化。

假设在表t1的列c1和c2上有一个索引,以下查询可以利用该索引:

SELECT * 
FROM t1
WHERE c1 IS NULL;