Título resume tudo. Estou razoavelmente bem com o PHP e confortável em fazê-lo fazer o que preciso com valores extraídos do MySQL, no entanto, no interesse de expandir meu conhecimento, tenho me perguntado se talvez não seja uma técnica mais eficiente no longo prazo. Eles são equivalentes (por serem aproximadamente a mesma quantidade de processamento no final) ou há casos em que um apresenta uma vantagem distinta sobre o outro?
Depende muito do que você está fazendo com os registros e da aparência da sua arquitetura de rede. Por exemplo, se o procedimento armazenado reduzir a quantidade geral de dados transmitidos do MySQL para o PHP e você tiver um link relativamente lento entre a instância do PHP e o banco de dados, um SP certamente poderá ajudá-lo.
Eu recomendaria que você começasse com algumas das manipulações 'mais pesadas' que você faz em seus dados no lado do PHP, veja o que você pode escrever como um SP e, em seguida, compare-o.
Um ponto a favor de fazer mais processamento no banco de dados é que o banco de dados não pode otimizar o que não vê. Por exemplo, definir uma propriedade de uma classe persistente para um valor constante para todas as instâncias certamente terá um desempenho melhor se for feito na camada do banco de dados.
Um ponto contra é que os bancos de dados são bons em operações baseadas em conjuntos, mas não tão bons em operações baseadas em linhas. Por exemplo, algo como converter uma hora UTC para hora local com base em um fuso horário variando por linha pode não funcionar tão bem no banco de dados quanto na camada do aplicativo.
Normalmente se o resultado for uma agregação, (sum, avg, count) é muito mais rápido de ser computado no servidor de banco de dados, evitando comunicação desnecessária entre o servidor e o cliente. Além disso, ordenar e agrupar pode se beneficiar de índices, reduzindo a quantidade de computação.