sql >> Database >  >> RDS >> Mysql

Verschil tussen deze twee benaderingen van samenvoegingstafels?

Afgezien van de syntaxis, werken ze voor het kleine fragment precies hetzelfde. Maar als het enigszins mogelijk is, schrijf dan altijd nieuwe zoekopdrachten met ANSI-JOIN's.

Wat semantisch betreft, wordt de kommanotatie gebruikt om een ​​CARTESIAN product tussen twee tabellen te produceren, wat betekent dat een matrix wordt geproduceerd van alle records uit tabel A met alle records uit tabel B, dus twee tabellen met respectievelijk 4 en 6 records produceren 24 records. Met behulp van de WHERE-component kunt u vervolgens de rijen kiezen die u echt wilt uit dit cartesiaanse product. MySQL volgt echter niet echt deze enorme matrix, maar semantisch is dit wat het betekent.

Een JOIN-syntaxis is de ANSI-standaard die duidelijker definieert hoe tabellen op elkaar inwerken. Door de ON clausule naast de JOIN , het maakt duidelijk wat de twee tabellen met elkaar verbindt.

Functioneel zullen ze hetzelfde uitvoeren voor uw twee zoekopdrachten. Het verschil ontstaat wanneer u andere [OUTER] . gaat gebruiken JOIN-typen.

Specifiek voor MySQL heeft komma-notatie één verschil

STRAIGHT_JOIN lijkt op JOIN, behalve dat de linkertabel altijd vóór de rechtertabel wordt gelezen. Dit kan worden gebruikt voor die (enkele) gevallen waarin de join-optimizer de tabellen in de verkeerde volgorde plaatst.

Het zou echter niet verstandig zijn om op dit verschil te rekenen.



  1. mysql selecteer som groeperen op datum

  2. postgresql:gegevenstype voor md5-berichtoverzicht?

  3. Hoe rijen binnen een partitie in SQL te rangschikken?

  4. Oracle naar PostgreSQL:ANSI outer join-syntaxis in PostgreSQL