This really is much more of a theoretical question and i believe the easiest way is always to begin with a good example.

Let us state that I've got a rating system. Every user can rate anything once and each item could be ranked by any user just once. I wish to present some good reputation for every user's rankings (all of the products he ranked, the rating, time etc.)

My method of fixing this is to possess a table such as this:

rating_id | user_id | item_id | rating | date

This table store every rating plus some other needed data. Within this situation, if you will find 10k customers and 10k products the table will be a very lengthy one and additionally to that particular I'd be requiring to make use of some JOINs to discover the title from the user and also the title from the products he ranked. So I am speculating that will take considerable time.

Shall We Be Held on the right track or it is possible to better means to fix my problem?