MySQL 数据库索引优化项目实战

本文来自作者奋斗在奋斗,小马用车主程工程师,兼职MySQLDBA,拥有多年的互联网项目经验,曾就职于知名互联网公司,擅长数据库优化、架构设计、混编程序架构容错及设计。索引是应用程序设计和开发的一个重要方面。如果索引过多,应用程序中的更新、删除等操作会变慢,性能会受到影响;如果索引过少,对查询性能又会产生影响。要找到的一个平衡点,这对应用的性能很重要。

关于key_len长度计算公式:也就是说索引key_len长度过大,也会影响SQL性能。所以为什么也不能默认null,会占用字节,索引长度哟。利用索引加快查询速度行记录检索从索引记录中直接返回结果(联合索引)如果列定义为DEFAULTNULL时,NULL值也会有索引,存放在索引树的最前端部分。案例1:

表特殊说明:260万行记录,c1、c2、c5三个列值完全一样,但定义不一样:c1列定义为NOTNULLDEFAULT0,有索引c2列定义为DEFAULTNULL,有索引c5列定义为NOTNULLDEFAULT0,无索引

对比一下:

统计类业务:

求平均值,有索引时,扫描索引即可,无需全表扫描(避免回表)

有索引,可以快速排序完成

读取的列改成c1

28250937VS6595995383289,差了233478倍,再次表明不同的执行计划,性能差距很大呀。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180704A1HCQ300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券