********************************************************
mysql> explain SELECT
    -> m.id_membership, m.code,
    -> p.price
    -> FROM memberships AS m
    -> LEFT JOIN membership_programs AS p ON (p.id_membership = m.id_membership AND p.suspended = 0)
    -> WHERE m.id_membership = 2 AND suspended = 0 AND site = "MS"
    -> ;
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| id | select_type | table | type  | possible_keys                                              | key                      | key_len | ref   | rows | Extra       |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | m     | const | PRIMARY,XAK1_memberships,XAK2_memberships,XFK1_memberships | PRIMARY                  |       4 | const |    1 |             |
|  1 | SIMPLE      | p     | ref   | XFK1_membership_programs,XIE1_membership_programs          | XFK1_membership_programs |       4 | const |    2 | Using where |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
2 rows in set (0.02 sec)
*****************************************************
********* и ПОЧТИ такой же но INNER *******************
*****************************************************
mysql> explain SELECT
    -> m.id_membership, m.code,
    -> p.price
    -> FROM memberships AS m
    -> INNER JOIN membership_programs AS p ON (p.id_membership = m.id_membership AND p.suspended = 0)
    -> WHERE m.id_membership = 2 AND suspended = 0 AND site = "MS"
    -> ;
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
| id | select_type | table | type  | possible_keys                                              | key                      | key_len | ref   | rows | Extra       |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | m     | const | PRIMARY,XAK1_memberships,XAK2_memberships,XFK1_memberships | PRIMARY                  |       4 | const |    1 |             |
|  1 | SIMPLE      | p     | ref   | XFK1_membership_programs,XIE1_membership_programs          | XFK1_membership_programs |       4 | const |    2 | Using where |
+----+-------------+-------+-------+------------------------------------------------------------+--------------------------+---------+-------+------+-------------+
2 rows in set (0.00 sec)
********************************************************
Найдите десять отличий! Или я плохо смотрю?..
Каррроче, експлейн на всю эту фигню что тама что тама выдет для таблицы memberships AS m (которая, обратите ка ваше внимание, стоит в начале произведения) тип связывания CONST. !
Ну это ж никак ни ALL...