Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Ще се представят ли заявките ANSI JOIN спрямо не-ANSI JOIN по различен начин?

Двете заявки са еднакви, с изключение на това, че втората е ANSI-92 SQL синтаксис, а първата е по-старият SQL синтаксис, който не включва клаузата за присъединяване. Те трябва да произвеждат точно същия план за вътрешна заявка, въпреки че може да искате да проверите.

Трябва да използвате синтаксиса ANSI-92 поради няколко причини

  • Използването на клаузата JOIN разделя логиката на връзката от логиката на филтъра (WHERE) и по този начин е по-чиста и по-лесна за разбиране.
  • Няма значение за тази конкретна заявка, но има няколко обстоятелства, при които по-старият синтаксис за външно присъединяване (използване на +) е двусмислен и резултатите от заявката следователно зависят от изпълнението – или заявката изобщо не може да бъде разрешена. Това не се случва с ANSI-92
  • Това е добра практика, тъй като повечето разработчици и dba ще използват ANSI-92 в днешно време и трябва да следвате стандарта. Със сигурност всички съвременни инструменти за заявки ще генерират ANSI-92.
  • Както е посочено от @gbn, той има тенденция да избягва случайни кръстосани свързвания.

Самият аз се съпротивлявах на ANSI-92 за известно време, тъй като има леко концептуално предимство на стария синтаксис, тъй като е по-лесно да си представим SQL като масово декартово присъединяване на всички използвани таблици, последвано от операция за филтриране - умствена техника, която може да бъде полезна за да разберете какво прави SQL заявката. Въпреки това преди няколко години реших, че трябва да вървя с времето и след сравнително кратък период на адаптация сега силно го предпочитам - предимно поради първата причина, посочена по-горе. Единственото място, където човек трябва да се отклони от синтаксиса на ANSI-92 или по-скоро да не използва опцията, е с естествените съединения, които са имплицитно опасни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кумулативен Общо в MS Sql сървър

  2. Как да създадете изглед в SQL Server

  3. Избройте акаунтите, свързани с пощенски профил на база данни в SQL Server

  4. SQL Server 2016:Дизайнер на заявки

  5. Двусмислена грешка в името на колоната на един конкретен сървър