Too many columns, how to reduce it? User events, ratings, scores storing for each lesson
You should turn each of those repeated columns into a separate row. Instead of a table design

QuizId
Item1
Item2
...
Item500


The table should be

QuizId
ItemNumber   -- values are 1 through 500
ItemValue


Then instead of having hundreds of columns there will be thousands, or even millions, of rows. That's fine. RDBMS is designed to handled that many without concern.