У меня и моих коллег есть вопрос относительно длины запросов SQL Server 2008 и оптимизатора SQL Server.
Мы планируем создать некоторые хранимые процедуры, которые потенциально могут иметь много параметров. Внутри нашей хранимой процедуры мы просто выберем некоторые значения из таблицы, соединяющей другие таблицы.
Наши хранимые процедуры будут выглядеть так
CREATE PROCEDURE QueryTable
@Parameter001 nvarchar(20),
@Parameter002 int,
@Parameter003 datetime,
@Parameter004 decimal(11,2),
@Parameter005 date,
@Parameter006 varchar(150),
@Parameter007 int,
@Parameter008 decimal(5,2),
@Parameter009 nvarchar(10),
@Parameter010 nvarchar(200),
@Parameter011 nvarchar(50) --,
--...and so on, there are probably 50 to 100 parameters here
AS
BEGIN
SET NOCOUNT ON;
SELECT ID, COL01, COL02, COL03, COL04, COL05 from TestTable T
LEFT JOIN AnotherTable A On T.SomeColomn = A.SomeColumn
LEFT JOIN AThirdTable ATT On A.ThirdTableID = ATT.Id
--and so on, probably 5-10 Tables joined here
WHERE
T.Col02 = @Parameter001 AND
T.Col05 = @Parameter004 AND
ATT.SomeColumnContainingData = @Parameter027
A.AnotherID = @Parameter050
--probably 50 to 100 conditions here (Number of conditions equals number of parameters)
END
GO
Наши вопросы:
Существует ли ограничение на количество условий, которые оптимизатор запросов и кэш SQL Server могут принимать во внимание?
Если такого технического ограничения нет, существует ли передовая практика относительно того, сколько условий можно и нужно использовать в таких случаях?