Processar uma grande quantidade de dados com eficiência com MySQL e PHP

Preciso encontrar uma maneira de processar eficientemente uma grande quantidade de dados em PHP / MySQL. Aqui está a situação:

Tenho uma tabela de banco de dados com, digamos, um milhão de registros. Com base na entrada do usuário do PHP, preciso classificar todos esses um milhão de registros de acordo com uma etapa de cálculo não trivial, para que eu possa escolher os itens com maior pontuação. Meu problema é que isso diminui muito do ponto de vista do uso da memória, principalmente na etapa de classificação, se eu reorganizar os dados em colunas e usar array_multisort.

s métodos alternativos em que consigo pensar sã

Fazer os cálculos em PHP e reinserir os dados com as pontuações em uma tabela temporária, recuperando os itens de maior pontuação usando uma consulta SELECT ... ORDER BY score ... LIMITFazer os cálculos em PHP e enviar os dados com as pontuações para um arquivo CSV, chamar o utilitário de classificação por linha de comando e ler o número X superior de linhasFazendo os cálculos no MySQL usando um procedimento armazenado e recuperando o número X superior de itens, como na opção 1. Minha preocupação é se o banco de dados é adequado para o processamento de números que envolveria

Isso tem que ser um problema bastante comum para coisas como mecanismos de pesquisa. Escalabilidade é a prioridade número um, mas o desempenho também deve ser muito bom. Uma dessas abordagens é a melhor ou existe outra ótima opção que eu nem estou considerando?

questionAnswers(3)

yourAnswerToTheQuestion