摘要

当查询条件涉及多个已建立索引的属性时,TiDB不能利用多个索引产生更优的执行计划。为了解决此问题,在研究现有数据库解决方案(如PostgreSQL和MySQL等)后,在TiDB中提出一种同时利用多个索引的新类型数据访问路径,称为MultiIndexPath。首先,设计算法生成一个查询可能的MultiIndexPath,并产生该路径的物理计划MultiIIndexPlan,然后计算物理计划的代价;其次,结合TiDB的架构与实现,提出MultiIndexPlan的通用执行框架;最后,当条件为合取范式时,提出Pipeline执行方案。整个工作基于TiDB 3. 0实现并进行若干实验,结果表明:当条件为析取范式时,所提方案的性能比原TiDB至少有一个数量级提升;当条件为合取范式时,性能也优于原TiDB。