论文摘要
在关系数据库中,数据库的查询效率问题是数据库的性能中最为重要的指标。现代数据库中包含了越来越多的信息,为了更好的保存信息和方便查询就要把众多信息类保存在不同的数据表中,在查询时可能会从不同的表中提取信息,导致经常会用到多表连接查询问题。数据表个数的增多会导致关系的数目增加,这直接导致查询执行计划的数目呈指数增长,使得搜索空间过于庞大,大大的增加了计算复杂性。因此,如何解决多表查询优化问题是提高数据库性能的关键。在数据库的发展过程中,对查询的优化处理一直没有停止,一般数据库采用的是近似穷举的优化算法,该算法的查询效率很低,不能很好解决多表查询问题。在研究数据库多表查询优化时,最难处理的就是连接关系多,执行代价大的问题。对待像多表查询这样的NP问题时,比较好的选择是用启发式算法或随机算法来处理。在面向数据库多表查询优化问题时,比较优秀的是遗传算法,该算法与传统优化算法相比,优化速度和效果都有了很大提高,但是遗传算法在优化多表查询问题时会出现“早熟”现象和计划生成时间较长的缺陷,为了使多表查询更优化,本文应用免疫遗传算法对遗传算法进行了改进。在免疫遗传算法的研究中,有研究人员将免疫学中的记忆细胞引入到算法中,记忆细胞能够存储算法迭代时的较优个体,并在下一次迭代时附加到新一代种群中,这样就提高了算法的收敛速度。但是由于优良个体的加入,种群的多样性容易被破坏,从而到达局部收敛而不是全局收敛,因此本文将免疫遗传算法进行了改进,用一个疫苗培养接种过程,即并行的遗传算法取代记忆细胞,这样做的目的是对原记忆细胞中的抗体进行交叉、变异等遗传操作,从而提高了疫苗接种后的新一代种群的多样性,有效的防止“早熟”现象和局部收敛,虽然这样会在一定程度上增加算法的执行代价,但是其收敛速度得到了大幅提升,从而使计划生成时间迅速减小,因此该算法能够达到数据库多表查询优化的目的。