当 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
是什么?请修复查询并限定每一列。可能还有其他问题。
假设我有一个由字段 (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
是什么?请修复查询并限定每一列。可能还有其他问题。