当前位置:  开发笔记 > 后端 > 正文

由于选择性较低,MariaDB不对1列自连接使用索引(所有NULL)

如何解决《由于选择性较低,MariaDB不对1列自连接使用索引(所有NULL)》经验,为你挑选了0个好方法。

我们有一个查询在我们的一个表中查找重复项,基于很少可用的标识符,让我们调用它rareIdentifier INT(10) UNSIGNED NULL.我们在此列上有一个单列常规旧索引.

有问题的查询如下所示:

SELECT a.id, b.id FROM
    widget a INNER JOIN widget b
ON a.rareIdentifier = b.rareIdentifier;

问题是,对于最近的重复查找运行,我们实际上有0一个值为的行rareIdentifier; 即所有行都有NULL此列.MariaDB决定不使用索引,选择Using join buffer (flat, BNL join)扫描整个表格的方法.

但是NULLs不能相等!那么为什么要尝试比较每对行呢?

据我所知,如果MySQL/MariaDB的选择性太低,它将不会使用索引.我相信这就是这种情况.实际上,似乎在索引中只有1个值意味着查询几乎是瞬时的.

该表是InnoDB表.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有