Memorising times tables is a really stupid idea. To be good at arithmetic and to build a foundation to understand mathematics, one needs to understand the rules and logic underlying the calculations and not merely memorise them. I have never memorised the times tables. Even for many single digit numbers, I calculate them each time.
For instance I would calculate 7*8 by doing (5+2)*8 = 5*8 + 2*8 = 40 + 16 = 56 in my head. I'll do this nearly every time. Even if I think I remember the answer, I like to verify it by recalculating. This may seem like it takes longer than memory, and it may even seem dumb, but it builds an understanding of numbers that memory will not give you. Despite doing this each time, I can do it fast. It becomes easier with more practice.
You can do these calculations in any way that suits you. These would be fine as well:
7*8 = 7*(10-2) = 7*10 - 7*2 = 70 - 14 = 56
7*8 = 7*4*2 = 7*2*2*2 = 14*2*2 = 28*2 = 56
It involves learning the basic rules of algebra and using them to simplify calculations so that they can be done without having to memorise anything more than these rules and the simplest of calculations. Learning how to double, half, multiply by 10, add and subtract single digits etc. is easy, so if one can break a calculation down to these simple steps, then it's easy to do it without memory whilst building a fundamental understanding of numbers.
It may seem tricky for those who aren't used to it, but it is necessary if anyone wants to become good with mathematics. Doing this is crucial to developing something called "number sense". Number sense is critical for dealing with mathematics.
Overtime people will naturally remember the most useful information and they'll be able to determine what information is most useful to any given problem. For instance 8 is 2 cubed, so multiplying by 8 is the same as doubling 3 times, so the example above becomes even more straight-forward: You simply double 7 three times. 7 -> 14 -> 28 -> 56
People don't need to memorise any doubling either. I double 28 by breaking it down into 25 and 3: 25*2 + 3*2 = 50 + 6 = 56. Or you can just double each digit and make sure you carry if the answer for a digit is more than 9: 28*2 = 20*2 + 8*2 = 40 + 16 = 56. With the 16 you carry the 1 over to the 4 which becomes 5.
This is easy once one is used to it and can be done whilst hardly thinking about it. It becomes entirely intuitive and natural. And even if it takes longer at first, it increases the level of understanding considerably. By encouraging people to learn by memory instead, it doesn't help them actually understand mathematics.
Once someone understands basic rules that can help them multiply small numbers together, they can build upon this to have a greater understanding of numbers, including with division and percentages. They can eventually learn concepts beyond simple arithmetic, though most people probably don't ever need to use advanced algebra, trigonometry, calculus etc.
Picture credit: https://www.flickr.com/photos/derek_b/4844800215 CC BY 2.0