Why is the asp.NET profile designed in such a horrible way?
<p>In the current project I'm working on, we are using the asp.NET profile to store information about users, such as their involvment in a mailing list.</p>

<p>Now, in order to get a list of all the users in the mailing list, I cannot simply do a database query, as the asp.NET profile table is, simply put, awful.</p>

<p>For those who do not know, the profile table has two main columns, the 'keys' column, and 'values' column, and they are organised as so:</p>

<p>Keys:
Key1:dataType:startIndex:endIndex:key2:dataType . . etc.</p>

<p>Values:
value1value2value3...</p>

<p>This is pretty much impossible to query using SQL, so the only option to find users that have a specific property is to load up a list of ALL the users and loop through it.</p>

<p>In a site with over 150k members, this is understandably very slow!</p>

<p>Are there specific reasons why the Profile was designed like this, or is it just a terrible way of doing dynamically-generated data?</p>
