Usage statistics.

How many users do you have, what demographic data do you need, how many choices are there on each, how many different ways to vote were there, how are you recording the votes, how often do you expect it to be queried, and how? Any way you recorded the votes, you can probably extract a fairly well rolled-up version, and serve up more specific rollups from there. If worst comes to worst you could use memcache or some similar thing to reduce database traffic.

For instance, suppose you were polling on the favorite season, and you want to break it down by age, sex, race, educational level, income bracket, employment status, marital status, shoe size, hair color, handedness, and location (defined as nearest integer latitude and longitude), etc. etc. etc. You could store them in a table with season, each demographic factor (extracted from the user record or input at voting time), and a count of how many such people voted for that season. (Do NOT store just vote and user ID, to extract the demographic data later on demand, if the users might ever care about the votes being secret! Store who voted, *separately*.) Then it should be easy to pull out a breakdown by each demographic sector, or even a combination. (Just be aware that with a small enough sample size, it may thus be possible to extract how certain individuals voted, or reveal other private data.)

-Dave