Ah ha! So if I had:
CREATE TABLE `rep_table` ( `rep_id` smallint(5) unsigned auto_increment, `rep_login` varchar(15) NOT NULL default '', `rep_password` varchar(15) NOT NULL default '', `rep_fname` varchar(255) NOT NULL default '', `rep_lname` varchar(255) NOT NULL default '', PRIMARY KEY (`rep_id`) ) TYPE=InnoDB; I would additionally add a KEY (`rep_login`,`rep_password`) Instead of KEY `rep_login` (`rep_login`), KEY `rep_password` (`rep_password`) Or even KEY (`rep_password`, `rep_login`) Given that the query would most likely be something like: SELECT * FROM rep_table WHERE rep_login = '$user' AND rep_password = '$pass'; And I would never really search for just the password, so the KEY `rep_password` (`rep_password`) Is sorta a useless index? Furthermore, if I understand correctly, if I did the query like so: SELECT * FROM rep_table WHERE rep_password = '$pass' AND rep_login = '$user'; I would NOT get the benefit of the index either since I changed the order of my search, is that true? > -----Original Message----- > From: Bruce Feist [mailto:[EMAIL PROTECTED] > > > > > Here's a close analogy for you. In a library, fiction books are > typically sorted first by author's last name, and then by > author's first > name. Think "KEY (author_last, author_first). This makes it fast to > find all books by an author with a given last name, and even > faster to > find all books given the author's first and last names... but > it doesn't > help if you need to find books by author's first name. > > Bruce Feist > And Dan wrote: > -----Original Message----- > From: Dan Nelson [mailto:[EMAIL PROTECTED] > > > Mysql will only use one index for a particular table, so a statement > like SELECT * FROM mytable WHERE a_id=123 AND b_id=345 will be able to > use the compound index to filter to exactly the records you're looking > for. With two separate indices, it'll use the index with the lowest > cardinality, pull all the matching records, and discard the ones where > the other field doesn't match your criteria. > > The field order only matters if you also want to be able to do a query > on a_id. Mysql will be able to use a KEY (a_id,b_id), but not a > (b_id,a_id) one, since the field it's interested in is not the first > one. most of the time, you'll end up generating two indexes: > (a_id,b_id), and (b_id). --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php