Можно посмотреть на план выполнения запроса и определить то, что он на самом деле пытается сделать. Я думаю, что механизм запроса SQL Server, как предполагается, делает этот тип сканирования и разумно переведет его в операции. Как, если Вы делаете "дорогой-op И ложный", это быстро оценит ко лжи.
Из того, что я учился, что Вы вводите, (и может быть), отличающийся от того, что на самом деле выполняется. Вы просто говорите сервер, какие результаты Вы ожидаете. Как это добирается, ответ не коррелирует слева направо кода, который Вы предоставляете.
#/usr/bin/perl
use strict;
use warnings;
use Getopt::Std;
getopts('i:o:p:');
our($opt_i, $opt_o, $opt_p);
my $inputfile = $opt_i;
my $outputfile = $opt_o;
my $parameter_value = $opt_p || "20";
print "$_\n" for $inputfile, $outputfile, $parameter_value;
C:\Temp> ks -iinput -ooutput -p55 input output 55
C:\Temp> ks -iinput -ooutput input output 20
The best thing is to use GetOpt::Long and use a hash instead of individual variables. Затем вы можете передать значения по умолчанию, предварительно заполнив массив
use Getopt::Long;
my %opts = (parameter => 20);
GetOptions( \%opts,
'p|parameter=i',
'o|outputfile=s',
'i|inputfile=s'
) or die "Invalid parameters!";
# I didn't bother cloning STANDARD_HELP_VERSION = 1;