列上的索引,仅用于IS NULL和IS NOT NULL

Luk*_*lze 8 mysql indexing null

我的表中删除了一列.在每个sql语句中,我检查此标志是否为NULL.有人想删除条目,标志设置为当前时间戳.

如果要还原条目,此时间戳用于还原它们.这是使用此列的值时的唯一用例.

在所有其他情况下,重要的是要知道它是否为空或它是否为非空.

将来,该表可以并且将包含数百万行.

在此列上创建索引是否有用?因为99%的陈述和用例并不关心价值.MySQL是否优化了IS NULL条件,因此不需要索引?

Inc*_*nca 4

“已删除”上的索引还将索引空值,从而允许更快地查找非空/空值

我认为这在这种情况下就足够了,不会造成太多开销,因为时间戳是在删除时设置的,因此不会改变太多。(相反:使用始终更改且仅有时设置为 null 的编辑时间戳,会导致每次更改记录时都调整索引。这可能不是最佳的。此处情况并非如此。)

(另外,但我不知道索引器是否足够聪明来利用这一点,预期的更改总是到达索引的末尾,无论是在空端还是在“最近”端。)

当然,分析(如果重要的话,查询执行时间和存储空间)以查明是否存在由此产生的实际问题。