我应该在mysql表中的tinyint字段类型上创建索引吗?

use*_*580 9 mysql indexing

我刚刚在一个Web应用程序上工作,发现大多数mysql表都有字段,比如,is_live, can_do, required, published(以及更多)字段类型为TINYINT,并且0 or 1仅采用.我只是想知道是否需要在这些列上创建索引,因为脚本也使用包含这些列的连接.所以问题是:

我也应该为这些列添加索引吗?

我应该改变其他类型吗?

请看这个问题更多的是理解概念而不是解决问题.

谢谢.

Dan*_*llo 18

一般的建议是布尔字段的索引很少有用.

B树索引对于高基数数据(即具有许多可能值的列,其中列中的数据是唯一的或几乎唯一的)最有效.

某些数据库引擎(如Oracle和Postgres)支持位图索引.传统上,位图索引被认为适用于性别(男性或女性)等数据,这些数据具有少量不同的值,但很多都出现这些值.

MySQL当前不支持位图索引,但可以使用其"index_merge"功能实现类似的功能.应该使用Falcon引擎(Source)引入位图索引.


Sha*_*mik 6

我的数据库专家说,"如果你不知道查询,就不要添加任何索引".在您的情况下,看起来您知道查询.所以是的,我们可以考虑索引.如果您有数据仓库类型的系统,请创建位图索引.否则不要创建任何索引.在如此小的基数列上,B树索引是不好的.