如何索引mysql中的二进制列,或者我应该分为两个表?

oug3syen  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我想索引一个二进制列。它可以是1(对于300万行),也可以是0(对于100行)。
使用mysql的explain似乎完全忽略了我创建的索引,即使我使用 USE INDEX 在我的询问中。
难道就不能像这样索引一列吗?这是否意味着任何依赖于它的查询都将需要一个完整的表扫描?
我可以看到一种解决方案是将数据拆分为两个表,这在某种程度上是基于业务需求的。
还有其他选择吗?
谢谢!

fiei3ece

fiei3ece1#

当值为1(公共值)时,忽略索引并简单地扫描表,抛出几个不适用的行是非常困难的。
当值为0(非常罕见的值)时,将使用索引,并且非常有效。然而,这可能只适用于当你明确地说 WHERE col = 0 .
没有看到 SHOW CREATE TABLE 以及 SELECT ,很难猜测还有哪些优化可能有用。我想到的一个问题是:从该列开始的综合索引。
也很难判断分成两张table是否有帮助。你有时需要吗 UNION 他们又在一起了?如果拆分能清除代码,那就好了。请注意,其他一些列可能会在一个表或另一个表中消失。
分区很少有帮助。

相关问题