有些时候,我们只是访问表中的几个字段,并且字段内容较少,我们可以为这几个字段单独建立一个组合索引,这样就可以直接只通过访问索引就能得到数据,一般索引占用的磁盘空间比表小很多,所以这种方式可以大大减少磁盘IO开销。
如:select id,name from company where type='2';
如果这个SQL经常使用,我们可以在type,id,name上创建组合索引
create index my_comb_index on company(type,id,name);
有了这个组合索引后,SQL就可以直接通过my_comb_index索引返回数据,不需要访问company表。
切记,性能优化是无止境的,当性能可以满足需求时即可,不要过度优化。在实际数据库中我们不可能把每个SQL请求的字段都建在索引里,所以这种只通过索引访问数据的方法一般只用于核心应用,也就是那种对核心表访问量最高且查询字段数据量很少的查询。
【来源】:只通过索引访问数据
应用场景:
比如陌陌中“附近”用户列表,显示的是头像、昵称、年龄、个性签名这些核心字段,所以把它们建一个联合索引,select的时候可以只通过索引访问数据。这种方式带来额外的好处是,相比“select *”能返回更少的数据。至于其它非核心但重要的字段,可以在用户“个人主页/详细信息页”加载并显示,即所谓的延迟加载。