(Cette réponse concerne uniquement SQL Server 2005+. Je ne connais rien à MySQL.)
Oui. Comme vous l'avez mentionné, une contrainte de clé primaire est soutenue par un index clusterisé par défaut. Vous pouvez indiquer à SQL Server de sauvegarder la contrainte avec un index non clusterisé en déclarant la contrainte comme suit :
ALTER TABLE MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY NONCLUSTERED(Col1);
Oui, vous pouvez définir un index avec plusieurs colonnes dans la clé d'index. Ce n'est vraiment pas différent d'un index non clusterisé.
CREATE UNIQUE CLUSTERED INDEX IX_MyTable_Clus
ON MyTable(Col1, Col2, Col3);
Références :ALTER TABLE
, CREATE INDEX