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

Разлика между тези два подхода за свързване на маса?

С изключение на синтаксиса, за малкия фрагмент те работят точно по същия начин. Но ако изобщо е възможно, винаги пишете нови заявки с помощта на ANSI-JOIN.

Що се отнася до семантичността, нотацията със запетая се използва за създаване на КАРТЕЗОВ продукт между две таблици, което означава създаване на матрица на всички записи от таблица A с всички записи от таблица B, така че две таблици с 4 и 6 записа съответно произвеждат 24 записа. Използвайки клаузата WHERE, можете да изберете редовете, които всъщност искате от този декартов продукт. Въпреки това, MySQL всъщност не следва и не прави тази огромна матрица, но семантично това означава това.

Синтаксисът JOIN е ANSI стандартът, който по-ясно дефинира как взаимодействат таблиците. Като поставите ON клауза до JOIN , става ясно какво свързва двете таблици заедно.

Функционално те ще изпълняват същото за вашите две заявки. Разликата идва, когато започнете да използвате други [OUTER] Типове JOIN.

Специално за MySQL, нотацията със запетая има една разлика

STRAIGHT_JOIN е подобен на JOIN, с изключение на това, че лявата таблица винаги се чете преди дясната таблица. Това може да се използва за онези (няколко) случая, за които оптимизаторът за свързване поставя таблиците в грешен ред.

Това обаче не би било разумно да разчитам на тази разлика.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT ... ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ с КЪДЕ?

  2. Система за нулиране на парола в PHP

  3. Възможно ли е да има индексиран изглед в MySQL?

  4. MySQL Copy Database

  5. Изключване на единични кавички в PHP при вмъкване в MySQL