Why isn't the following query using the `always` index?
It might be possible to rewrite it into a UNION

SELECT * FROM (
 (
  SELECT movies.* FROM movies
   WHERE site='5' AND always='true'
 ) UNION
 (
  SELECT movies.* FROM movies
  INNER JOIN showtimes ON showtimes.movie=movies.id
  WHERE site='5' AND showdate BETWEEN '2012-4-11' AND '2012-04-18'
 )
) AS movie_shows
GROUP BY id
ORDER BY listorder


I haven't tested the above, but am curious the results of the EXPLAIN

Your always attribute is failing in two ways:


It is very low selectivity as @ypercube points out, since there are only two possible 
values. MySQL will discard using these type of indexes
The query has OR. Meaning it would have to do a table scan anyway to get match both conditions.