我有一个简单的SELECT
查询:
SELECT * FROM MyTable
WHERE ParentId IN (0, 1) OR ParentId IS NULL
ORDER BY SortColumn
LIMIT 0, 2048;
为什么在撰写WHERE ParentId IN (1)
而不是(0, 1)
时,此查询的运行速度 10x 会变慢?
无论是否找到第二个id,查询运行得更快。
修改
看起来像运行查询检查1个元素而没有OR ParentId IS NULL
运行速度与运行查询检查多个元素一样快。
ParentId
是另一列的外键,因此编入索引。
为什么这么重要?