"Melhor" depende de qual é o seu objetivo.
As duas principais maneiras de armazenar imagens carregadas pelo usuário são colocar o conteúdo binário no banco de dados como um BLOB ou armazenar as imagens na unidade em algum lugar e colocar uma entrada no banco de dados indicando qual imagem pertence a onde.
Colocar as imagens no banco de dados tem a vantagem de não exigir nenhum tipo de permissão de sistema de arquivos no servidor da web e remove qualquer tipo de problema de sincronização se você estiver servindo o site em vários servidores da web. No entanto, com o tempo, isso torna seu banco de dados enorme e, se você não projetar suas tabelas corretamente, pode matar absolutamente seu desempenho e escalabilidade.
Armazenar as imagens como arquivo no sistema de arquivos tem a vantagem adicional de tornar a recuperação extremamente rápida e eficiente, já que os servidores web são muito bons em servir arquivos estáticos.
Editado para adicionar
Se você decidir armazenar o conteúdo do arquivo no banco de dados, absolutamente não o coloque em uma tabela que precise ser acessada rapidamente. Se, por exemplo, você tiver uma tabela de "usuários" pesquisada em quase todas as visualizações de página, essa tabela não o lugar para colocar o conteúdo do arquivo. Em vez disso, crie uma tabela separada de "imagens" ou "arquivos" contendo o arquivo e as meta-informações relacionadas.
Colocar muitos bytes por linha em uma tabela torna essa tabela muito lenta para trabalhar. Você não quer esse tipo de coisa em tabelas que são muito usadas.