我有一个名为概要的字段,对我来说常见的查询是查看是否已提供概要:
SELECT * FROM catalog WHERE synopsis IS NOT NULL;
是否建议为此查询添加以下索引?
ALTER TABLE main_catalog ADD INDEX (synopsis(1));
为什么或为什么不呢?
答案 0 :(得分:3)
首先,假设synopsis
是字符或二进制字段(索引的长度仅适用于这些类型)。
synopsis
上的索引 - 包括前缀长度为1的索引 - 将使用is not null
的索引(您可能对Stack Exchange上的this answer感兴趣)。
这实际上是否有帮助取决于数据的性质。例如,如果synopsis
永远不是NULL
,那么通过索引访问数据会稍微慢一点,插入操作会稍微慢一点(在大多数情况下差异非常小)。另一方面,如果您只有0.1%的记录提要,那么索引应该有助于提高查询的性能。