The combokey and the "exists(..) and exists(..)' give different results, so the choice depends on what you require.
The combokey tests for the existence of the combination of values of field1 and field2. This test is correct when the combinations are important (ie field1 and field2 are related in some way, however loosely), and I expect would be the more common requirement.
The separate exists clauses test for existence of a value of field1, regardless of the value of field2 and the the existence of a value of field2 regardless of field1. This test is correct if field1 and field2 need to be tested individually, and there is no direct relationship between them.
Hope I made that clear ...
Logic will get you from a to b. Imagination will take you everywhere. - A Einstein