Hi,
When you define a PK at schema level, Campaign internally creates a unique index on the involved columns. Managing btree indexes on string column is problematic or better to say not that efficient.
If you define an autopk the PK column will be a different ID column and the unique index on your composite columns will serve to maintain the data integrity. However the searches will be slow as string column as part of index don't offer that efficiency.
Option 1 is indeed a solution but certainly not the best one. Having an ID PK thru autopk will help you to perform quick joins, its just the filtering queries on marketCode that will be a bit slow.
Moving to option 2.
When you create a new Market schema, there will be two columns as per me MarketID and MarkeTCode. MarketCode will contain all unique market codes and MarketID can be the autopk column containing unique integers.
When you use this column marketID as a FK in your main table, the composite key will be on two integers accountID and marketID. there will be no string to impact the performance.
Hope this helps.
Regards,
Vipul