添加索引以查看字段是否为NULL

时间:2014-10-14 20:47:05

标签: mysql indexing null

我有一个名为概要的字段,对我来说常见的查询是查看是否已提供概要:

SELECT * FROM catalog WHERE synopsis IS NOT NULL;

是否建议为此查询添加以下索引?

ALTER TABLE main_catalog ADD INDEX (synopsis(1));

为什么或为什么不呢?

1 个答案:

答案 0 :(得分:3)

首先,假设synopsis是字符或二进制字段(索引的长度仅适用于这些类型)。

synopsis上的索引 - 包括前缀长度为1的索引 - 将使用is not null的索引(您可能对Stack Exchange上的this answer感兴趣)。

这实际上是否有帮助取决于数据的性质。例如,如果synopsis永远不是NULL,那么通过索引访问数据会稍微慢一点,插入操作会稍微慢一点(在大多数情况下差异非常小)。另一方面,如果您只有0.1%的记录提要,那么索引应该有助于提高查询的性能。