Further optimization: the best join ordering