COALESCE выполняет только то, что запрашивает OP, как и IFNULL:
SELECT Nz(MightBeNullVar, 0) FROM ... (MS Access version)
SELECT COALESCE(MightBeNullVar, 0) FROM ... (MySQL version)
SELECT IFNULL(MightBeNullVar, 0) FROM ... (MySQL version)
Разница в том, что COALESCE может искать по нескольким переменным и возвращать первую ненулевую:
SELECT COALESCE(MightBeNullVar, MightAlsoBeNullVar, CouldBeNullVar, 0) FROM ... (MySQL version)
каждое из них вернет 0 (ноль), если ни одно из значений не имеет заданного значения (равно нулю).
IFNULL (довольно бессмысленно) быстрее. Возможно, в вашем запросе есть и другие вещи, которые лучше оптимизировать, прежде чем беспокоиться о проблемах IFNULL и COALESCE. Если у вас есть несколько вещей, чтобы проверить, используйте COALESCE. Если у вас есть только одно значение для проверки, используйте IFNULL.