腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)


title: 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
tags: 面试常见题


腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)

腾讯面试题:创建索引的时候,你一般会考虑些哪些因素?(按照下面的点去答,你就稳了,哈哈😁。)

① 适合建立索引的列是出现在where 子句中的列,或者连接子句中指定的列;

② 基数较小的类,索引效果较差,没有必要在此列建立索引;

③ 使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间;

④ 不要过度的索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只需要保持所需要的索引即可,不应过度索引,这样更利于查询。

⑤ 避免where 子句对字段施加函数,否则不会命中索引;

⑥ 在使用InnoDB 时使用与业务无关的自增主键作为主键,即使用逻辑主键而不要使用业务主键;

⑦ 将打算加索引的列设置为Not null,否则将导致引擎放弃使用索引而进入全表扫描;

⑧ 删除长期未使用的索引,不用的索引的存在会造成不必要的性能损耗。

其实回答面试官,用上面的的几点即可。下面为拓展知识:

分两种情况来说:

1)哪些情况需要建立索引:

① 主键自动建立唯一索引;

② 频繁作为查询条件的字段应该建立索引

③查询中与其他表关联的字段,外键关系建立索引;

④ 单键/组合索引的选择问题,组合索引的性价比更高些;

⑤ 在经常需要排序的列创建索引,因为索引已排序,这样查询可以利用索引的排序,加快排序查询时间;

2)哪些情况不需要建立索引

① 表记录太少;

② 经常增删查改的表或字段;因为虽然索引提高查询的速度,同时却降低更新表的速度,因为更新表时,MySQL不仅需要保存数据,还要保存一下索引文件,所以会带来很大的性能开销。

③ where 条件里用不到的字段就不创建索引;

④ 过滤性不好的就不要创建索引了,比如说,性别。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值