It is going to sound weird, and I don't know WHY it works, but try this for sterling silver flatware and jewelry:
In a non-metallic bowl large enough to hold your flatware flat and emersed, put large piece of tin foil folded up in quarters and a couple of tablespoons of baking soda. Fill with just enough water to cover (a couple of inches) and put in your silver into it and let it soak for a minute. Then shake it around (you may want to do them one or two pieces at a time) and the tarnish will "miraculously" come off. It can take a couple of minutes, but it seems to always work.
I use this method for my antique sterling silver bracelet which I wear once or twice a year (and which tarnishes considerably in between) and while I don't understand the chemistry (magic) it does work