Here is what is happening:
FROM THE MYSQL MANUAL
MySQL resolves all joins using a single-sweep multi-join method. This means that MySQL reads a row from the first table, then finds a matching row in the second table, then in the third table and so on. When all tables are processed, it outputs the selected columns and backtracks through the table list until a table is found for which there are more matching rows. The next row is read from this table and the process continues with the next table.
Craig, your SQL checks first the school table then the members table. This is a more lengthly process since probably not all schools are members and the limiting factor is on the members shool (ID=477) not on school tables. It should check members first then join. I would ask you two things:
Preceed the SQL with the EXPLAIN keyword and send us the results.
Run my sql with the where's in the followin order
WHERE
member_school.school_id=school.school_id;
AND
member_school.member_id=477
thats inverted from the previous one which follows:
mysql> SELECT school.school_id as id, school.school_name as name FROM
-> member_school, school
-> WHERE
-> member_school.member_id=477
-> AND
-> member_school.school_id=school.school_id;
I'm going to check into vincent's sql it is a very impresive improvement.
Saludos
Gerardo