Bana, t-SQL partilerinde IF ifadelerinin kullanılmasının performans için zararlı olduğu öne sürülmüştür. Biraz onay bulmaya veya bu iddiayı doğrulamaya çalışıyorum. SQL Server 2005 ve 2008 kullanıyorum.
İddia şu parti ile: -
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
SQL Server, oluşturulan yürütme planını yeniden kullanamaz çünkü bir sonraki yürütme farklı bir dal gerektirebilir. Bu, SQL Server'ın şu anki yürütme için hangi şubenin gerekli olduğunu önceden belirleyebileceği temelinde yürütme planından bir dalı tamamen ortadan kaldıracağı anlamına gelir. Bu gerçekten doğru mu?
Ayrıca bu durumda ne olur: -
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
hangi şubenin önceden yürütüleceğini belirlemek mümkün değilse?