My question will use emails as an example, but this could apply to anything.
Normally before registering a new user (including inserting his/her email) I check
I believe that COUNT is one of the quickest methods. Also remember when doing your queries, if you only want to test its existence don't do a
SELECT *
Instead specify a specific field
SELECT id
So you are not retrieving as much data. In the case of using COUNT:
SELECT COUNT(id) FROM Users WHERE email = 'emailaddress'
Please see below link on how to use COUNT in a result set
http://www.tizag.com/mysqlTutorial/mysqlcount.php
Use
INSERT IGNORE INTO Users VALUES(...);
with a unique key on email field, then check row count with mysql_affected_rows();
This will result in a single query to the DB and rule out the race condition of the time window between SELECT and INSERT