sweh wrote:
If you want performance, then don't use a database at all.
Or learn how to use one? I do databases all day long, so i'll have to take some issue with your statement.

sweh wrote:
Since we're talking about tiny datasets, store them in plain text files and load them into memory.
If he's not worried about multiple processes accessing it, that should be ok.
sweh wrote:
But seriously, the problem with creating a gazillion fields is one of scalability, especially if there's a large number of attributes that could be selected from. What if character A's attributes are different to character B's?
Which was my original question. If A's attributes are different then B's, it would probably be a good idea to have a separate TABLE for each one, with a one-to-one relationship on the main TABLE. Then, a VIEW could join them all together, especially helpful for the common fields.
sweh wrote:
Conversely the design I described is scalable, extensible, normalized, maintainable and all other good stuff

scalable - Not really. In practicality, such a TABLE would probably kill performance especially if any sort of aggregation was required.
extensible - If, and only if, only one value was required per entry.
normalized - Absolutely not. In this TABLE all values must be of the same data type.
maintainable - Let me guess, you're a coder who has never touched a database before, and figures as long as the statement can be written, the database is maintainable?
sweh wrote:
(Actually, I am semi-serious about the perl hash; this is too small and too simple to use a database for; the overhead a database introduces is amazing)
A database introduces overhead? I think you mean the connection adds it to the code. A DB connection adds no more to code than any library's API does.
Sweh, i don't mean to knock you here. It just sounds as if you don't usually touch databases too often, so even if the logic is correct, as far as databases are concerned, a long TABLE is definitely not the way to go.
Now, the OP wants to use MySQL, so i think all he wants is quick data access anyway and not a real database. But that is another story.