Caro Paulo,
Concordo plenamente, nem todas as consultas farão uso de índice. Acho que me espressei mal. Utilizando a tabela que foi dada como exemplo, a maioria dos selects vai utilizar indice (pk) na cláusula WHERE, sendo assim, as consultas ficarão muito mais rápidas.
Leandro,
Essas suas fotos ficarão armazenadas em disco, ou no próprio banco de dados??
Se for armazená-las em disco, porque você não cria uma estrutura do tipo:
/photos/products/1/photo1.jpg
/photos/products/1/photo2jpg
/photos/products/1/photo3.jpg
/photos/products/2/photo1.jpg
/photos/products/2/photo2.jpg
/photos/products/2/photo3.jpg
E, para mostrar as fotos, vc faria um select no banco, pega o código do produto, e faz uma concatenaćão de string para abrir uma foto:
'/photos/produtos/' . $result->{Tabela_Produtos::COL_CODIGO} . '/photo' . $indice '.jpg;
E, para abrir todas as fotos de um produto, você somente abre todos os arquivos do diretório.
(É só uma solućão alternativa, pois eu não gosto de colocar arquivos binários em banco de dados)