SQL operations have the advantage that they can be threaded, which is important when you're carrying out around tens of thousands of string comparisons.
It is also not necessary to generate and write the entire file (all 54000 records!) to disk when an update is made, while using a sequential KV file means you have to.
I'd definitely recommend SQL over a KV file for this. If you want user preferences to be shared between servers, use MySQL. Otherwise, use SQLite.