sql >> Database teknologi >  >> RDS >> Sqlserver

Har det nogen bivirkninger at ændre HVIS EKSISTER(VÆLG 1 FRA ) til HVIS EKSISTER(VÆLG TOP 1 FRA )?

Nej, der burde ikke være nogen forskel. EXISTS redder, så snart den har fundet en enkelt matchende række. Derfor foretrækkes det altid frem for f.eks. (select COUNT(*) from ...) > 0 - en COUNT ville tvinge alle rækker til at blive taget i betragtning.

Hvis du opretter følgende fire forespørgsler:

select * from sys.objects
select top 1 * from sys.objects
select 1 where exists(select * from sys.objects)
select 1 where exists(select top 1 * from sys.objects)

Og slå eksekveringsplaner til, vil du se, at den anden forespørgsel genererer en eksekveringsplan, der indeholder en TOP operatør. Den 3. og 4. forespørgsel producerer identiske planer. TOP ignoreres.



  1. Opdatering af specifik række i SQLAlchemy

  2. Datoformat og SQL Query afklaring

  3. Hvordan bruger jeg Entity Framework 6 med MySQL i ASP.NET 5?

  4. flet alle rækkers kolonner til en enkelt kolonne fra den sammenføjede tabel