(Detta svar är endast för SQL Server 2005+. Jag kan ingenting om MySQL.)
Ja. Som du nämnde stöds en primärnyckelbegränsning som standard av ett klustrat index. Du kan säga åt SQL Server att backa begränsningen med ett icke-klustrat index genom att deklarera begränsningen enligt följande:
ALTER TABLE MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY NONCLUSTERED(Col1);
Ja, du kan definiera ett index med mer än en kolumn i indexnyckeln. Det är egentligen inte annorlunda än ett icke-klustrat index.
CREATE UNIQUE CLUSTERED INDEX IX_MyTable_Clus
ON MyTable(Col1, Col2, Col3);
Referenser:ALTER TABLE
, CREATE INDEX