三星索引

索引设计遵循以下原则

三星索引是一种衡量数据库索引性能的重要标准,它包括三个维度:聚集性、排序一致性和覆盖索引。具体来说:

  1. 第一颗星(聚集性):如果与一个查询相关的索引行是相邻的,或者至少相距足够靠近的话,这个索引就可以标记上一颗星。这最小化了必须扫描的索引片的宽度,也就是让索引片尽量变窄,减少需要扫描的数据行。

  2. 第二颗星(排序一致性):如果索引行的顺序与查询语句的需求一致,即ORDER BY列加入到索引中,保持列的顺序,那么索引可以标记上第二颗星。这排除了排序操作,因为如果结果集采用现有顺序读取,就可以避免额外的排序步骤,提升性能。

  3. 第三颗星(覆盖索引):如果索引行中包含查询语句中的所有列,那么这个索引就可以标记上第三颗星。这意味着避免了访问表的操作(避免了回表操作),只访问索引就可以满足查询需求,减少了查询的步骤和IO请求次数,性能几乎可以提升一倍。

索引片尽量变窄有以下几个好处:

减少磁盘I/O操作:索引片变窄意味着需要读取的磁盘块数量减少,从而减少了磁盘I/O操作的次数。磁盘I/O操作是数据库性能的瓶颈之一,减少I/O操作可以显著提高查询性能。

提高缓存命中率:数据库系统通常会使用缓存来存储频繁访问的数据。索引片变窄后,更多的索引数据可以被缓存在内存中,从而提高缓存命中率,减少对磁盘的访问。

降低内存占用:索引片变窄意味着索引数据占用的内存空间减少,这可以降低内存占用,提高系统的整体性能。

减少排序和合并操作:在某些查询中,如果索引片足够窄,可以避免排序和合并操作,因为数据已经按照需要的顺序存储。这可以减少计算开销,提高查询效率。

提高并发性能:索引片变窄可以减少锁竞争,提高并发性能。因为更少的数据需要被锁定,所以更多的并发操作可以同时进行。

优化查询计划:数据库查询优化器可以更好地利用索引片变窄的优势,生成更高效的查询计划,从而提高查询性能。

减少维护成本:索引片变窄可以减少索引的维护成本,如索引的更新和重建操作,因为需要处理的数据量减少了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。