Zdecydowanie nie opcja 2. Jeśli nie potrzebujesz danych, nie pobieraj ich. Prosty. Byłoby niesamowicie nieefektywne łączenie na tabelach (szczególnie dużych), gdy nie potrzebujesz danych. Możesz skorzystać z opcji 1 lub użyć dynamicznego SQL do zbudowania zapytania. Następnie zestawiłbym kilka przypadków testowych i uruchomiłbym plan wykonania, aby zobaczyć, jak działa twoje zapytanie.