Io ho testato MySQL esplicitamente fino a 50 milioni di record, con ottime prestazioni!
Il cuore del database sogno gli indici: se dividi la tabelle in più parti spezzi l'indice unico categoria-prodotto e costringi MySQL a fare un join (l'indice non è altro che un join salvato e aggiornato).
Ti conviene quindi:
* mantenere i dati insieme
* studiare bene gli indici: un'unico grosso indice primario occupa meno spazio e dà le stesse identiche prestazioni di più indici (provato su decine di milioni di record!)
* giocare sulla vera forza di MySQL: GLI INTERI CORTI!!!!! Questa è una chicca veramente fenomenale e poco conosciuta. Se io uso un codice di 10 char per un prodotto ho 10 byte per codice; se invece uso un intero posso addirittura appoggiarmi ad uno smallint (fino a 64'000 occorrenze diverse), che a confronto occupa un'inezia, velocizzando anche di 20-30 volte l'accesso; il trucco sta nel lasciare i codici varchar usati dal livello logico come "seconda descrizione" e non come chiave (e così via quando entrano nei documenti etc...)

A dispo per approf

:metallica