I see some of the same problems as in [your last query](http://codereview.stackexchange.com/questions/62056/mysql-imdb-query-speed/62060#62060) **Do not use single-letter aliases** `a`, `m1`, `c1`... How about an alias that helps you write the query, instead of one that saves a few characters? That's what they are for, after all. **Old style `JOIN`** I think you would benefit from reading about [explicit `JOIN` syntax](http://dev.mysql.com/doc/refman/5.0/en/join.html) instead of using the pre-ANSI-92 syntax. **Vertical white space** I personally find queries much easier to read if you use line breaks between lists of columns/values/conditions, instead of writing them inline. **Column aliases** It's good practice to rename short/ambiguous/ugly column names to something more human-friendly while presenting the result set. To you it may not matter much, but if you were presenting this report to your boss, they may scratch their head at `fname` and `lname`. The syntax for column aliases is the same as table aliases. **That Devil `BETWEEN`** [`BETWEEN` is ambiguous. You should instead use logical operators.](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) This is about Microsoft T-SQL, but some problems apply pretty much across the board in SQL. > **What do BETWEEN and the devil have in common?**<br><br> I'll make no bones about it: BETWEEN is evil. For one, the meaning of the word in English does not always match the meaning of the operator in T-SQL. In T-SQL, BETWEEN is an *inclusive* range - not everyone gets that. Sure, in casual conversation when someone says "between 3 and 6" the answer really could be 3, 4, 5 or 6; but other times, they really mean to restrict the set to only 4 or 5 (an *exclusive* range). #**The reviewed script**# SELECT DISTINCT Actor.fname AS ActorFirstName, Actor.lname AS ActorLastName, FROM Actor -- look no alias needed INNER JOIN Cast AS OlderCast ON OlderCast.pid = Actor.id INNER JOIN Movie AS OlderMovie ON OlderCast.mid = OlderMovie.id INNER JOIN Cast AS NewerCast ON NewerCast.pid = Actor.id INNER JOIN Movie AS NewerMovie ON NewerCast.mid = NewerMovie.id WHERE AND OlderMovie.year >= 1850 AND OlderMovie.year <= 1900 AND NewerMovie.year >= 1901 AND NewerMovie.year <= 1950;