I have the following table of people and their birthdays:
name birthday ---------------------- yannis 1979-06-29 natalia 1980-08-19 kostas
Seems to be rather fast, no problems with leap years:
SELECT * FROM `people` ORDER BY CONCAT(SUBSTR(`birthday`,6) < SUBSTR(CURDATE(),6), SUBSTR(`birthday`,6))
Все гениальное -- просто! ;)