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

Каква е разликата между използването на кръстосано свързване и поставянето на запетая между двете таблици?

Те връщат едни и същи резултати, защото са семантично идентични. Това:

select * 
  from A, B

...е (трепне) синтаксис на ANSI-89. Без клауза WHERE за свързване на таблиците заедно, резултатът е декартов продукт. Което също предлага алтернативата:

    select * 
      from A 
cross join B

...но CROSS JOIN е синтаксис ANSI-92.

Относно производителността

Между тях няма разлика в производителността.

Защо да използвате ANSI-92?

Причината да се използва синтаксисът на ANSI-92 е за поддръжка на OUTER JOIN (IE:LEFT, FULL, DIGHT) - синтаксисът на ANSI-89 няма никакъв, толкова много бази данни са имплементирали свои собствени (което не се пренася към други бази данни ). IE:(+) на Oracle , =* на SQL Server



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вътрешни елементи на SQL Server:Планово кеширане, т. II – Прекомпилиране на планове

  2. SQL Server 2005 ROW_NUMBER() без ORDER BY

  3. Няма поддръжка за OVER в MS SQL Server 2005?

  4. Как да използвате SQL Server T-SQL функция SUM:5 случаи на употреба

  5. Добавете водещи и последващи нули в SQL Server