EXISTS
. 1 milyon kayıttan SELECT yaparsanız veya 1 kayıttan SELECT yaparsanız (TOP 1 kullanarak söyleyin), aynı sonucu ve aynı performansı ve hatta aynı yürütme planına sahip olurlar. (Neden?) Çünkü var olmaz 1 milyon kayıt taraması tamamlanana kadar bekler (veya 1 kayıt taraması tamamlandı). Bir kümede bir kayıt bulduğunda, sonuç DOĞRU olarak döndürür (Bu durumda bir sorun yoktur * veya sütun adı her ikisi de aynı performans sonucuna sahip olacaktır). Aşağıda
USE pubs
GO
IF EXISTS(SELECT * FROM dbo.titleauthor)
PRINT 'a'
IF EXISTS(SELECT TOP 1 * FROM dbo.titleauthor)
PRINT 'b'
(ı Ekran boyutu sorun var, ben o görüntü bu kestikten) bu sorguları için yürütme planı Ama bu senaryo ve performans ve hatta yürütme planı tamamen değişim olacak Eğer aşağıdaki gibi sorgular kullanırken, (bu sorguyu kullanmalısınız neden bilmiyorum!): Bu senaryoda
USE pubs
GO
IF EXISTS(SELECT * FROM dbo.titleauthor)
PRINT 'a'
IF EXISTS(SELECT 1)
PRINT 'b'
, SQL Server perfo gerekmez olarak rm ikinci sorguda tarama işlemi, daha sonra yürütme planı aşağıdaki gibi değişir: `exists` alt sorgular içinde
' select' terimleri göz ardı edilir, bu seçim bir tercih meselesidir yapma. –
Önemli değil. her ikisi de aynı performansa sahip –
Ben asla SELECT 1 kullanmıyorum çünkü çirkin görünüyor ve bana kodlayıcının gerçekten nasıl çalıştığını bilmeden performans hakkında çok fazla söz ettiğini söylüyor. –