As you can see, the number of possibilities goes up quite fast as you support longer passwords. So that means for a rainbow table to be effective, it must actually reduce the number of possible candidates that it stores. After all, who would want to download 32 Petabytes to crack a hash? Sure, you could use a dictionary and permutations on the words to try to reduce the search space significantly