今天朋友问我说,今天去面试的时候面试官问他,用户表的性别需要创建索引吗? (tinyint)
他的回答是看情况,可加可不加
而面试官期望的回答应该是不加,并且解析是根据笛卡尔积理论巴拉巴拉。。。
简单的说吧,一般不需要,因为性别,暂且就两个值男与女。一般而言男与女比例是平衡的。
索引的选择性是指索引列中不同值的数目和表的记录数的比值,假如表里面有1000条数据,表索引列有980个不同的值,这时候索引的选择性就是980/1000=0.98 。
索引的选择性越接近1,这个索引的效率很高。
如果为性别创建索引,查询语句 性别 = 1(男)的数据,索引的选择性就是 3/1000=0.003
索引的选择性值很低,对查询提升不大,所以为这两个值建立索引是不值得的。
因为无论多少条记录,建立性别的索引,最多让你的语句少检索一半, 但与建立索引带来的损失比, 可以说是因小失大