Should I define a separate index in the email column (for search purposes) or is the index automatically added along with the UNIQ_EMAIL_USER constraint?
CREATE TABLE IF NOT EXISTS `customer` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `first` varchar(255) NOT NULL, `last` varchar(255) NOT NULL, `slug` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQ_SLUG` (`slug`), UNIQUE KEY `UNIQ_EMAIL_USER` (`email`,`user_id`), KEY `IDX_USER` (`user_id`) ) ENGINE=InnoDB;
EDIT : as suggested by Corbin, I requested for EXPLAIN SELECT * FROM customer WHERE email = 'address' an empty table. This is the result, I do not know how to interpret it:
id select_type type possible_keys key key_len ref rows Extra 1 SIMPLE ALL NULL NULL NULL NULL 1 Using where
When IXD_EMAIL is added to the table, the same query shows:
id select_type type possible_keys key key_len ref rows Extra 1 SIMPLE ref IDX_EMAIL IDX_EMAIL 257 const 1 Using where
sql mysql indexing
gremo Mar 19 '12 at 2:00 2012-03-19 02:00
source share