I think that the security benefits are minimal but existent. Somebody could sensibly still exploit an SQL Injection vulnerability, but were he able to execute MySQL queries freely, he wouldn't be able to select tables without knowing the prefix. I'm neither a security expert nor am I knowledgeable with common web cracking techniques, so I'm not entirely sure, though.
As for changing the prefix:
If you ONLY changed the table prefix, then WordPress tries to find tables called asdf_(something) in your database, but they're still all called wp_(something). You have to change the table's prefixes themselves too (in phpMyAdmin or similar).
you can run RENAME TABLE (old_table) TO (new_table)
in your case, for example, RENAME TABLE wp_comments TO asdf_comments
And repeat for each of the ten tables in your WordPress database.
But! If you try going into your Admin panel now, you'll get an error. This is because there's certain rows that need changing, because they contain the prefix too. (From http://www.eligeotravez.net/2007/04/17/changing-table-prefix-for-wordpress/ )
Table (prefix)_options
--> option_name = (old prefix)_user_roles
Table (prefix)_usermeta
--> meta_key = (old prefix)_capabilities
--> meta_key = (old prefix)_user_level
--> meta_key = (old prefix)_autosave_draft_ids
The last one might not exist, depending on whether you autosaved a draft in WordPress or not. Anyway, what I did when I did this was use phpMyAdmin, select the table in question, go to the SQL tab, and run these commands:
UPDATE (new prefix)_options SET option_name = '(new prefix)_user_roles' WHERE option_name = '(old prefix)_user_roles'
UPDATE (new prefix)_usermeta SET ,eta_key = '(new prefix)_capabilities' WHERE meta_key = '(old prefix)_capabilities'
And so on, where (new prefix) and (old prefix) are these prefixes, without the parentheses of course. This will update all of those values.