(Ta odpowiedź dotyczy tylko SQL Server 2005+. Nie wiem nic o MySQL.)
Tak. Jak wspomniałeś, ograniczenie klucza podstawowego jest domyślnie wspierane przez indeks klastrowy. Możesz powiedzieć SQL Serverowi, aby poparł ograniczenie indeksem nieklastrowym, deklarując ograniczenie w następujący sposób:
ALTER TABLE MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY NONCLUSTERED(Col1);
Tak, możesz zdefiniować indeks z więcej niż jedną kolumną w kluczu indeksu. To naprawdę nie różni się od indeksu nieklastrowanego.
CREATE UNIQUE CLUSTERED INDEX IX_MyTable_Clus
ON MyTable(Col1, Col2, Col3);
Referencje:ALTER TABLE
, CREATE INDEX