当 WHERE 子句中的一个字段为空时,MySQL 数据库是否使用复合索引?

Does a MySQL database use a composite index when one of the fields in the WHERE clause is null?

假设我有一个由字段 (commentId, journalEntryId, owning_comment_id ).

组成的复合索引

现在假设我有以下查询:

UPDATE comments c 
    SET c.acceptedAsAnswer = isAnswer 
WHERE c.id = commentId
AND c.journal_entry_id = journalEntryId 
AND c.owning_comment_id IS NULL; 

如您所见,c.owning_comment_id 应该是 NULL。这种情况下数据库还会使用复合索引吗?

这没有按预期工作:

c.owning_comment_id = NULL

改为使用

c.owning_comment_id IS NULL

否则,复合索引应该可以工作。 (并且该索引中列的顺序无关紧要。)

您提出的查询不完整 -- cd 是什么?请修复查询并限定每一列。可能还有其他问题。