Hi. I'm new to database optimization and I have a couple of questions. I have a table like this:
+--------+----------------+-------------+---------+ | id | fullname | email | user_id | +--------+----------------+-------------+---------+ Where fullname and email are varchar(100) and user_id is a non nullable foreign key. I have indices on every column. InnoDB engine. * Question 1: How can I optimize the case where I filter on one key but sort on another? This is fast: SELECT * FROM contacts WHERE fullname LIKE "j%" ORDER BY fullname LIMIT 10; But this is slow: SELECT * FROM contacts WHERE fullname LIKE "j%" ORDER BY email LIMIT 10; EXPLAIN tells me that the optimizer is using filesort for the second but not the first (which makes sense.) * Question 2: Why does introducing an extra WHERE clause make things slower? If I do this: SELECT * FROM contacts WHERE fullname LIKE "j%" AND user_id=1 ORDER BY fullname LIMIT 10; The results come back several orders of magnitude slower. This is despite the facts that: A) The results are the same for this query as the one without the test for user_id and B) About 95% of the records of in the table have user_id=1 Any insight will be greatly appreciated. Thanks, Adam -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]