• Wow. Amazing amount of information in this discussion, folks. I thank you all, especially those who pointed out alternate takes on the question and explanation.

    Yes, when formulating the question, I was thinking only of disk space used when I said "efficient", so please accept my apologies for that bit of ambiguity. I do thank Hugo for stepping in with his disection of the various issues raised -- I've learned a lot from that discussion.

    Also, as Steve alludes to in his post a couple ahead of this one, generally I've found that the QOD is focused on an idealized case to emphasize a particular point. The point I was thinking of here is that sometimes what appears to be an obvious choice may not be what was intended. In this case, if you really wanted to save every possible byte of storage, then char(10) would be better than varchar(10). Yes, in the 'real world' most of the time varchar(10) may be just as good in a practical sense, and would provide a bit more flexibity for possible future requirements changes, but this is QOD-land, not the real world.

    One more thing: I wouldn't have guessed that the 57% of respondants who chose varchar(10) were only interpreting "efficient" as having a broader meaning that included CPU usage and so on, but that most of them didn't work out the actual disk space usage to see that varchar(10) requires an average of a half byte more than char(10).