Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:IF EXISTS znacznie spowalnia zapytanie

Czy próbowałeś uruchomić oryginalne zapytanie z TOP 1? najprawdopodobniej będzie tak samo powolny.

Czasami, gdy optymalizator uważa, że ​​coś jest bardzo prawdopodobne i przy niewielkim nakładzie pracy zwróci duży zestaw danych (tj. prawie wszystkie rekordy zostaną zwrócone), wybiera głównie sprzężenia pętli, ponieważ potrzebuje tylko pierwszego i łączenie pętli jest dobre dla uzyskania tylko kilku rekordów. Kiedy okazuje się to nieprawdą, uzyskanie wyników zajmuje wieczność i jeden dzień.

W twoim przypadku brzmi to tak, jakby to było bardzo rzadkie, więc ten wybór bardzo boli. Spróbuj zamiast tego zrobić coś takiego jak SELECT @count = COUNT(*) FROM ... a następnie sprawdzenie, czy liczba ta jest niezerowa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z bootstrap modalpopup w ASP.NET

  2. Przekaż strukturę listy jako argument do procedury składowanej

  3. Usunąć klucz obcy bez znajomości nazwy ograniczenia?

  4. Przechowywanie czasu trwania wideo na serwerze sql

  5. Sql wybierz grupuj według i ciąg concat