sql >> Databáze >  >> RDS >> Sqlserver

Co je nejlepší zkontrolovat, zda položka existuje nebo ne:Vyberte Count(ID)OR Exist(...)?

EXISTUJE, vždy

  • COUNT bude procházet tabulkou nebo indexem:požádali jste o COUNT
  • EXISTS se zastaví, jakmile najde řádek

Upravit, aby bylo jasno

Samozřejmě, že v tomto případě, pokud je sloupec e-mailu jedinečný a indexovaný, bude blízko.

Obecně platí, že EXISTS bude využívat méně zdrojů a je také správnější. Hledáte existenci řádku, ne "více než nula", i když jsou stejné

Edit2:V EXISTS můžete použít NULL, 1, ID nebo dokonce 1/0:není to zaškrtnuto...

21. května 2011 edit:

Zdá se, že to bylo optimalizováno v SQL Server 2005+, takže COUNT je nyní stejný jako EXISTS v tomto případě



  1. jOOQ vkládací dotaz s vracením vygenerovaných klíčů

  2. MySql odmítá použít index

  3. Jak uložit relaci jedna k mnoha v databázi MySQL?

  4. Nejjednodušší způsob, jak postavit strom ze seznamu předků