{"id":4705,"date":"2018-03-05T16:29:55","date_gmt":"2018-03-06T00:29:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4705"},"modified":"2025-12-19T06:23:41","modified_gmt":"2025-12-19T14:23:41","slug":"ansi-join-support-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/ansi-join-support-n1ql\/","title":{"rendered":"N1QL\uc758 ANSI JOIN \uc9c0\uc6d0"},"content":{"rendered":"<h2><span style=\"font-weight: 400\">\uac1c\uc694<\/span><\/h2>\n<p><span style=\"font-weight: 400\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubc84\uc804 5.5\uc5d0\uc11c\ub294 N1QL\uc5d0 ANSI JOIN \uc9c0\uc6d0\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ubc84\uc804\uc758 Couchbase\uc5d0\uc11c\ub294 \uc870\uc778 \uc9c0\uc6d0\uc774 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc73c\ub85c \uc81c\ud55c\ub418\uc5b4 \uc788\uc5c8\ub294\ub370, \uc774\ub294 \uc870\uc778 \ud55c\ucabd\uc758 \ubb38\uc11c \ud0a4\ub97c \ub2e4\ub978 \ucabd\uc5d0\uc11c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \uacbd\uc6b0, \uc989 \ubb38\uc11c \ud0a4\ub97c \ud1b5\ud574 \ubd80\ubaa8-\uc790\uc2dd \ub610\ub294 \uc790\uc2dd-\ubd80\ubaa8 \uad00\uacc4\uc5d0 \uc870\uc778\ud558\ub294 \uacbd\uc6b0\uc5d0 \uc720\uc6a9\ud558\uac8c \uc791\ub3d9\ud569\ub2c8\ub2e4. <\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc774 \uc811\uadfc \ubc29\uc2dd\uc774 \ubd80\uc871\ud55c \uacbd\uc6b0\ub294 \uc870\uc778\uc774 \uc784\uc758\uc758 \ud544\ub4dc \ub610\ub294 \ud544\ub4dc \ud45c\ud604\uc2dd\uc5d0 \ub300\ud55c \uac83\uc774\uac70\ub098 \uc5ec\ub7ec \uc870\uc778 \uc870\uac74\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uc785\ub2c8\ub2e4. ANSI JOIN\uc740 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 \ud45c\uc900\ud654\ub41c \uc870\uc778 \uad6c\ubb38\uc785\ub2c8\ub2e4. ANSI JOIN\uc740 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\ubcf4\ub2e4 \ud6e8\uc52c \uc720\uc5f0\ud558\uc5ec \ubb38\uc11c\uc758 \ubaa8\ub4e0 \ud544\ub4dc\uc5d0 \ub300\ud55c \uc784\uc758\uc758 \ud45c\ud604\uc2dd\uc5d0 \ub300\ud574 \uc870\uc778\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc870\uc778 \uc791\uc5c5\uc774 \ud6e8\uc52c \uac04\ub2e8\ud558\uace0 \uac15\ub825\ud574\uc9d1\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">ANSI JOIN \uad6c\ubb38:<\/span><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">lhs-expression [ \uc870\uc778 \uc720\ud615 ] JOIN rhs-\ud0a4 \uc2a4\ud398\uc774\uc2a4 ON [ \uc870\uc778 \uc870\uac74 ]<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc870\uc778\uc758 \uc67c\ucabd\uc778 lhs-expression\uc740 \ud0a4 \uc2a4\ud398\uc774\uc2a4, N1QL \uc2dd, \ud558\uc704 \ucffc\ub9ac \ub610\ub294 \uc774\uc804 \uc870\uc778\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc870\uc778\uc758 \uc624\ub978\ucabd\uc778 rhs-keyspace\ub294 \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5ec\uc57c \ud569\ub2c8\ub2e4. ON \uc808\uc740 \uc870\uc778 \uc870\uac74\uc744 \uc9c0\uc815\ud558\uba70, \uc784\uc758\uc758 \ud45c\ud604\uc2dd\uc774 \ub420 \uc218 \uc788\uc9c0\ub9cc \uc624\ub978\ucabd \ud0a4\uc2a4\ud398\uc774\uc2a4\uc5d0\uc11c \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \ud5c8\uc6a9\ud558\ub294 \uc220\uc5b4\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc870\uc778 \uc720\ud615\uc740 INNER, LEFT OUTER, RIGHT OUTER\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. INNER \ubc0f OUTER \ud0a4\uc6cc\ub4dc\ub294 \uc120\ud0dd \uc0ac\ud56d\uc774\ubbc0\ub85c JOIN\uc740 INNER JOIN\uacfc \ub3d9\uc77c\ud558\uba70, LEFT JOIN\uc740 LEFT OUTER JOIN\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4. \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc870\uc778 \uc720\ud615\uc740 FULL OUTER \ub610\ub294 CROSS\uac00 \ub420 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \ud604\uc7ac N1QL\uc5d0\uc11c\ub294 FULL OUTER JOIN \ubc0f CROSS JOIN\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">ANSI JOIN \uc9c0\uc6d0 \uc138\ubd80 \uc815\ubcf4<\/span><\/h2>\n<p><span style=\"font-weight: 400\">\uc608\uc81c\ub97c \ud1b5\ud574 ANSI JOIN \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucffc\ub9ac\ub97c \uc2e4\ud589\ud558\ub294 \uc0c8\ub85c\uc6b4 \ubc29\ubc95\uacfc N1QL\uc758 \uae30\uc874 \uc870\uc778 \ucffc\ub9ac\ub97c \uc870\ud68c \uc870\uc778 \ub610\ub294 \uc778\ub371\uc2a4 \uc870\uc778 \uad6c\ubb38\uc5d0\uc11c \uc0c8\ub85c\uc6b4 ANSI JOIN \uad6c\ubb38\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ubc84\uc804\uacfc\uc758 \ud638\ud658\uc131\uc744 \uc704\ud574 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc740 N1QL\uc5d0\uc11c \uacc4\uc18d \uc9c0\uc6d0\ub418\uc9c0\ub9cc, \ub3d9\uc77c\ud55c \ucffc\ub9ac \ube14\ub85d\uc5d0\uc11c \uc870\ud68c \uc870\uc778 \ub610\ub294 \uc778\ub371\uc2a4 \uc870\uc778\uacfc \uc0c8\ub85c\uc6b4 ANSI JOIN \uad6c\ubb38\uc744 \ud63c\ud569\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c, \uace0\uac1d\uc740 \uc0c8\ub85c\uc6b4 ANSI JOIN \uad6c\ubb38\uc73c\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ub530\ub77c\ud558\uae30, <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/manage-settings\/install-sample-buckets.html\">\uc5ec\ud589 \uc0d8\ud50c \uc124\uce58<\/a> \uc0d8\ud50c \ubc84\ud0b7.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 1: \uc784\uc758\uc758 \uc870\uc778 \uc870\uac74\uc774 \uc788\ub294 ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">ANSI JOIN\uc758 \uc870\uc778 \uc870\uac74(ON \uc808)\uc740 \uc870\uc778\ub418\ub294 \ubb38\uc11c\uc758 \ubaa8\ub4e0 \ud544\ub4dc\ub97c \ud3ec\ud568\ud558\ub294 \ubaa8\ub4e0 \ud45c\ud604\uc2dd\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc0c9\uc778\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airport_city_country ON `travel-sample`(\ub3c4\uc2dc, \uad6d\uac00) WHERE type = \"airport\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route\r\n     ON airport.faa = route.sourceairport\r\n        AND route.type = \"route\"\r\nWHERE airport.type = \"airport\"\r\n  AND airport.city = \"San Francisco\"\r\n  AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc774 \ucffc\ub9ac\uc5d0\uc11c\ub294 \uacf5\ud56d \ubb38\uc11c\uc758 \ud544\ub4dc(\"faa\")\ub97c \uacbd\ub85c \ubb38\uc11c\uc758 \ud544\ub4dc(\"sourceairport\")\uc640 \uc870\uc778\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4(\uc870\uc778\uc758 ON \uc808 \ucc38\uc870). \uc774\ub7ec\ud55c \uc870\uc778\uc740 N1QL\uc758 \uc870\ud68c \uc870\uc778\uc774\ub098 \uc778\ub371\uc2a4 \uc870\uc778\uc5d0\uc11c\ub294 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 \ub450 \uc870\uc778 \ubaa8\ub450 \ubb38\uc11c \ud0a4\uc5d0 \ub300\ud574\uc11c\ub9cc \uc870\uc778\uc774 \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">ANSI JOIN\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \uc801\uc808\ud55c \uc778\ub371\uc2a4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4(\uc704\uc758 \"\ud544\uc218 \uc778\ub371\uc2a4\"). \ucffc\ub9ac \uc18d\ub3c4\ub97c \ub192\uc774\uae30 \uc704\ud574 \ub2e4\ub978 \uc778\ub371\uc2a4(\uc608: \uc704\uc758 \"\uc120\ud0dd\uc801 \uc778\ub371\uc2a4\")\ub97c \uc0dd\uc131\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc120\ud0dd\uc801 \uc778\ub371\uc2a4\uac00 \uc5c6\uc73c\uba74 \uae30\ubcf8 \uc2a4\uce94\uc774 \uc0ac\uc6a9\ub418\uba70 \ucffc\ub9ac\ub294 \uacc4\uc18d \uc791\ub3d9\ud558\uc9c0\ub9cc \ud544\uc218 \uc778\ub371\uc2a4\uac00 \uc5c6\uc73c\uba74 \ucffc\ub9ac\uac00 \uc791\ub3d9\ud558\uc9c0 \uc54a\uace0 \uc624\ub958\uac00 \ubc18\ud658\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc124\uba85\uc744 \uc0b4\ud3b4\ubcf4\uc138\uc694:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:45 highlight:0 decode:true\">\"plan\": {\r\n\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"airport\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"airport_city_country\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"8e782fd1b124eec3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"\\\"San Francisco\\\"\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"\\\"San Francisco\\\"\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"\\\"United States\\\"\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"\\\"United States\\\"\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Fetch\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"airport\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Parallel\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~child\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"NestedLoopJoin\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"alias\": \"route\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"on_clause\": \"(((`airport`.`faa`) = cover ((`route`.`sourceairport`))) and (cover ((`route`.`type`)) = \\\"route\\\"))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~child\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"route\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"covers\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`sourceairport`))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`destinationairport`))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((meta(`route`).`id`))\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"filter_covers\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`type`))\": \"route\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"route_airports\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"f1f4b9fbe85e45fd\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"nested_loop\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`airport`.`faa`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Filter\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"condition\": \"((((`airport`.`type`) = \\\"airport\\\") and ((`airport`.`city`) = \\\"San Francisco\\\")) and ((`airport`.`country`) = \\\"United States\\\"))\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"InitialProject\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"distinct\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"result_terms\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"expr\": \"cover ((`route`.`destinationairport`))\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Distinct\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"FinalProject\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Distinct\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0]\r\n}\r\n<\/pre>\n<p><span style=\"font-weight: 400\">NestedLoopJoin \uc5f0\uc0b0\uc790\uac00 \uc870\uc778\uc744 \uc218\ud589\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\uace0, \uadf8 \uc544\ub798\uc5d0\ub294 IndexScan3 \uc5f0\uc0b0\uc790\uac00 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc778 \"route\"\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ub371\uc2a4 \uc2a4\uce94\uc758 \uc2a4\ud32c\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\"spans\": [\r\n\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`airport`.`faa`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n]<\/pre>\n<p><span style=\"font-weight: 400\">\uc624\ub978\ucabd \ud0a4 \uacf5\uac04(\"route\")\uc5d0 \ub300\ud55c \uc0c9\uc778 \uc2a4\uce94\uc740 \uc67c\ucabd \ud0a4 \uacf5\uac04(\"airport\")\uc758 \ud544\ub4dc(\"faa\")\ub97c \uac80\uc0c9 \ud0a4\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc678\ubd80 \ud0a4 \uacf5\uac04 \"airport\"\uc758 \uac01 \ubb38\uc11c\uc5d0 \ub300\ud574 NestedLoopJoin \uc5f0\uc0b0\uc790\ub294 \ub0b4\ubd80 \ud0a4 \uacf5\uac04 \"route\"\uc5d0\uc11c \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \uc218\ud589\ud558\uc5ec \uc77c\uce58\ud558\ub294 \ubb38\uc11c\ub97c \ucc3e\uace0 \uc870\uc778 \uacb0\uacfc\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc870\uc778\uc740 \uc911\ucca9 \ub8e8\ud504 \ubc29\uc2dd\uc73c\ub85c \uc218\ud589\ub418\uba70, \uc678\ubd80 \ub8e8\ud504\ub294 \uc678\ubd80 \ud0a4\uc2a4\ud398\uc774\uc2a4\uc5d0\uc11c \ubb38\uc11c\ub97c \uc0dd\uc131\ud558\uace0 \uc911\ucca9\ub41c \ub0b4\ubd80 \ub8e8\ud504\ub294 \ud604\uc7ac \uc678\ubd80 \ubb38\uc11c\uc5d0 \ub300\ud574 \uc77c\uce58\ud558\ub294 \ub0b4\ubd80 \ubb38\uc11c\ub97c \uac80\uc0c9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p>\ucffc\ub9ac \uc6cc\ud06c\ubca4\uce58\uc5d0\uc11c \uc124\uba85 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud55c \ub2e4\uc74c \uacc4\ud68d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \uc124\uba85 \uc815\ubcf4\ub97c \uadf8\ub798\ud53d\uc73c\ub85c \ubcfc \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<img loading=\"lazy\" decoding=\"async\" width=\"2040\" height=\"1457\" class=\"wp-image-4796 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771.png\" alt=\"\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771.png 2040w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-300x214.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-1024x731.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-768x549.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-1536x1097.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771-1320x943.png 1320w\" sizes=\"auto, (max-width: 2040px) 100vw, 2040px\" \/>\n<p><span style=\"font-weight: 400\">\uc774 \uc608\uc5d0\uc11c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc758 \uc778\ub371\uc2a4 \uc2a4\uce94\uc740 \ucee4\ubc84\ub41c \uc778\ub371\uc2a4 \uc2a4\uce94\uc785\ub2c8\ub2e4. \uc778\ub371\uc2a4 \uc2a4\uce94\uc774 \ub36e\uc5ec \uc788\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \uac00\uc838\uc624\uae30 \uc5f0\uc0b0\uc790\uac00 \uc778\ub371\uc2a4 \uc2a4\uce94 \uc5f0\uc0b0\uc790\ub97c \ub530\ub77c \ubb38\uc11c\ub97c \uac00\uc838\uc624\uac8c \ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc5d0\ub294 ANSI JOIN\uc758 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \uc801\uc808\ud55c \ubcf4\uc870 \uc778\ub371\uc2a4\uac00 \ud544\uc694\ud558\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \uae30\ubcf8 \uc778\ub371\uc2a4\ub294 \uc774 \ubaa9\uc801\uc73c\ub85c \uace0\ub824\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud55c \ubcf4\uc870 \uc778\ub371\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0 \ucffc\ub9ac\uc5d0 \ub300\ud55c \uc624\ub958\uac00 \ubc18\ud658\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ub610\ud55c \ub2e4\uc74c\uacfc \uac19\uc740 \ud544\ud130\ub97c \uc0ac\uc6a9\ud588\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <em>route.type = \"\uacbd\ub85c\"<\/em>\u00a0<\/span><span style=\"font-weight: 400\">\ub3c4 ON \uc808\uc5d0 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. ON\uc808\uc740 \uc870\uc778\uc758 \uc77c\ubd80\ub85c \ud3c9\uac00\ub418\ub294 \ubc18\uba74 WHERE\uc808\uc740 \ubaa8\ub4e0 \uc870\uc778\uc774 \uc644\ub8cc\ub41c \ud6c4\uc5d0 \ud3c9\uac00\ub41c\ub2e4\ub294 \uc810\uc5d0\uc11c WHERE\uc808\uacfc \ub2e4\ub985\ub2c8\ub2e4. \uc774 \uad6c\ubd84\uc740 \ud2b9\ud788 \uc678\ubd80 \uc870\uc778\uc758 \uacbd\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \ubaa8\ub4e0 \uc870\uc778 \ud544\ud130\uc640 \ub354\ubd88\uc5b4 \uc870\uc778\uc758 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \uc788\ub294 \ud544\ud130\ub3c4 ON \uc808\uc5d0 \ud3ec\ud568\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 2: \ub2e4\uc911 \uc870\uc778 \uc870\uac74\uc774 \uc788\ub294 ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc740 \ub2e8\uc77c \uc870\uc778 \uc870\uac74(\ubb38\uc11c \ud0a4\uc758 \ub3d9\uc77c\uc131)\uc5d0 \ub300\ud574\uc11c\ub9cc \uc870\uc778\ud558\uc9c0\ub9cc, ANSI \uc870\uc778\uc758 ON \uc808\uc740 \uc5ec\ub7ec \uc870\uc778 \uc870\uac74\uc744 \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc0c9\uc778\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX landmark_city_country ON `travel-sample`(\ub3c4\uc2dc, \uad6d\uac00) WHERE type = \"landmark\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX hotel_title ON `travel-sample`(title) WHERE type = \"hotel\";\r\n<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT hotel.name hotel_name, landmark.name landmark_name, landmark.activity\r\nFROM `travel-sample` hotel JOIN `travel-sample` landmark\r\n\u00a0\u00a0\u00a0\u00a0ON hotel.city = landmark.city AND hotel.country = landmark.country AND landmark.type = \"landmark\"\r\nWHERE hotel.type = \"hotel\" AND hotel.title like \"Yosemite%\" AND array_length(hotel.public_likes) &gt; 5;<\/pre>\n<p><span style=\"font-weight: 400\">\uc124\uba85\uc744 \uc0b4\ud3b4\ubcf4\uba74 \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4('\ub79c\ub4dc\ub9c8\ud06c')\uc758 \uc778\ub371\uc2a4('\ub79c\ub4dc\ub9c8\ud06c_\ub3c4\uc2dc_\uad6d\uac00')\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \ubc94\uc704\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\"spans\": [\r\n\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`hotel`.`city`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`hotel`.`city`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`hotel`.`country`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`hotel`.`country`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n]\r\n<\/pre>\n<p><span style=\"font-weight: 400\">\ub530\ub77c\uc11c \uc5ec\ub7ec \uc870\uc778 \uc220\uc5b4\uac00 \uc7a0\uc7ac\uc801\uc73c\ub85c \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc758 \ub0b4\ubd80 \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \uc704\ud55c \uc5ec\ub7ec \uc778\ub371\uc2a4 \uac80\uc0c9 \ud0a4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 3: \ubcf5\uc7a1\ud55c \uc870\uc778 \uc2dd\uc774 \ud3ec\ud568\ub41c ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">ON \uc808\uc758 \uc870\uc778 \uc870\uac74\uc740 \ubcf5\uc7a1\ud55c \uc870\uc778 \ud45c\ud604\uc2dd\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, 'route' \ubb38\uc11c\uc758 'airlineid' \ud544\ub4dc\ub294 'airline' \ubb38\uc11c\uc758 \ubb38\uc11c \ud0a4\uc5d0 \ud574\ub2f9\ud558\uc9c0\ub9cc 'airline_'\ub97c 'airline' \ubb38\uc11c\uc758 'id' \ud544\ub4dc\uc640 \uc5f0\uacb0\ud558\uc5ec \uad6c\uc131\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc0c9\uc778\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airlineid ON `travel-sample`(airlineid) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airline_name ON `travel-sample`(name) WHERE type = \"airline\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT count(*)\r\nFROM `travel-sample` airline JOIN `travel-sample` route\r\n     ON route.airlineid = \"airline_\" || tostring(airline.id) AND route.type = \"route\"\r\nWHERE airline.type = \"airline\" AND airline.name = \"United Airlines\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc124\uba85\uc5d0\ub294 \uc624\ub978\ucabd \ud0a4\uc2a4\ud398\uc774\uc2a4(\"\uacbd\ub85c\")\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \ubc94\uc704\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\"spans\": [\r\n\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(\\\"airline_\\\" || to_string((`airline`.`id`)))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(\\\"airline_\\\" || to_string((`airline`.`id`)))\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n]<\/pre>\n<p><span style=\"font-weight: 400\">\uc774 \ud45c\ud604\uc2dd\uc740 \ub7f0\ud0c0\uc784\uc5d0 \ud3c9\uac00\ub418\uc5b4 \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc758 \ub0b4\ubd80\uc5d0\uc11c \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \uc704\ud55c \uac80\uc0c9 \ud0a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 4: IN \uc808\uc744 \uc0ac\uc6a9\ud55c ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc870\uc778 \uc870\uac74\uc740 \uac19\uc74c \uc870\uac74\uc77c \ud544\uc694\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. IN \uc808\uc744 \uc870\uc778 \uc870\uac74\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc0c9\uc778\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airport_faa_name ON `travel-sample`(faa, \uacf5\ud56d\uba85) WHERE type = \"airport\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airline_distance ON `travel-sample`(\ud56d\uacf5\uc0ac, \uac70\ub9ac) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT DISTINCT airport.airportname\r\nFROM `travel-sample` route JOIN `travel-sample` airport\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa IN [ route.sourceairport, route.destinationairport ] AND airport.type = \"airport\"\r\nWHERE route.type = \"route\" AND route.airline = \"F9\" AND route.distance &gt; 3000;\r\n<\/pre>\n<p>\uc124\uba85\uc5d0\ub294 \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4(\"\uacf5\ud56d\")\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \ubc94\uc704\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`route`.`sourceairport`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`route`.`sourceairport`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`route`.`destinationairport`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`route`.`destinationairport`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0}\r\n]\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 5: OR \uc808\uc744 \uc0ac\uc6a9\ud55c ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">IN \uc808\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c, ANSI JOIN\uc758 \uc870\uc778 \uc870\uac74\uc5d0\ub294 OR \uc808\ub3c4 \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud55c \uc778\ub371\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \ud55c, OR \uc808\uc758 \ub2e4\ub978 \uc554\uc740 \uc7a0\uc7ac\uc801\uc73c\ub85c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc758 \ub2e4\ub978 \ud544\ub4dc\ub97c \ucc38\uc870\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc778\ub371\uc2a4(\uc608\uc81c 1\uacfc \ub3d9\uc77c\ud55c route_airports \uc778\ub371\uc2a4):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";\r\nCREATE INDEX route_airports2 ON `travel-sample`(destinationairport, sourceairport) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4(\uc608 1\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airport_city_country ON `travel-sample`(\ub3c4\uc2dc, \uad6d\uac00) WHERE type = \"airport\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT count(*)\r\nFROM `travel-sample` airport JOIN `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON (route.sourceairport = airport.faa OR route.destinationairport = airport.faa) AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"Denver\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc774 \uc124\uba85\uc740 NestedLoopJoin\uc5d0\uc11c UnionScan\uc774 OR \uc808\uc744 \ucc98\ub9ac\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\"#operator\": \"UnionScan\",\r\n\"scans\": [\r\n\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"route\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"route_airports\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"f1f4b9fbe85e45fd\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"nested_loop\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`airport`.`faa`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"route\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"route_airports2\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"cdc9dca18c973bd3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"nested_loop\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`airport`.`faa`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0}\r\n]<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 6: \ud78c\ud2b8\uac00 \ud3ec\ud568\ub41c ANSI JOIN<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc758 \uacbd\uc6b0 \ud78c\ud2b8\ub294 \uc870\uc778\uc758 \uc67c\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5d0\ub9cc \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ANSI \uc870\uc778\uc758 \uacbd\uc6b0 \ud78c\ud2b8\ub97c \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5d0\ub3c4 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608 1\uacfc \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4(USE INDEX \ud78c\ud2b8 \ucd94\uac00):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route USE INDEX(route_airports)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Francisco\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">USE INDEX \ud78c\ud2b8\ub294 \ud50c\ub798\ub108\uac00 \uc870\uc778\uc744 \uc218\ud589\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud558\ub294 \uc778\ub371\uc2a4\uc758 \uc218\ub97c \uc81c\ud55c\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud78c\ud2b8\ub294 ANSI JOIN\uc758 \uc67c\ucabd \ud0a4 \uacf5\uac04\uc5d0 \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2-3 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport USE INDEX(airport_city_country)\r\n\u00a0\u00a0JOIN `travel-sample` route USE INDEX(route_airports)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Francisco\" AND airport.country = \"United States\";\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 7: ANSI \uc67c\ucabd \uc678\ubd80 \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc9c0\uae08\uae4c\uc9c0 \ub0b4\ubd80 \uc870\uc778\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc870\uc778 \uc9c0\uc815\uc5d0\uc11c JOIN \ud0a4\uc6cc\ub4dc \uc55e\uc5d0 LEFT \ub610\ub294 LEFT OUTER \ud0a4\uc6cc\ub4dc\ub97c \ud3ec\ud568\ud558\uae30\ub9cc \ud558\uba74 LEFT OUTER JOIN\uc744 \uc218\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc778\ub371\uc2a4(\uc608\uc81c 1\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4(\uc608 1\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airport_city_country ON `travel-sample`(\ub3c4\uc2dc, \uad6d\uac00) WHERE type = \"airport\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT airport.airportname, route.airlineid\r\nFROM `travel-sample` airport LEFT JOIN `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"Denver\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc774 \ucffc\ub9ac\uc758 \uacb0\uacfc \uc9d1\ud569\uc5d0\ub294 \uc67c\ucabd \uc678\ubd80 \uc870\uc778\uc758 \uc758\ubbf8\ub860\uc5d0 \ub530\ub77c \uc870\uc778\ub41c \ubaa8\ub4e0 \uacb0\uacfc\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc624\ub978\ucabd(\"\uacf5\ud56d\") \ubb38\uc11c\uc640 \uc870\uc778\ub418\uc9c0 \uc54a\uc740 \uc67c\ucabd(\"\ub178\uc120\") \ubb38\uc11c\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \uacf5\ud56d.airportname\ub9cc \ud3ec\ud568\ub418\uace0 route.airlineid(\ub204\ub77d\ub428)\ub294 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc740 \uacb0\uacfc\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04(\"route\")\uc5d0 IS MISSING \uc220\uc5b4\ub97c \ucd94\uac00\ud558\uc5ec \uc624\ub978\ucabd(\"route\") \ubb38\uc11c\uc640 \uc870\uc778\ud558\uc9c0 \uc54a\ub294 \uc67c\ucabd(\"airport\") \ubb38\uc11c\ub9cc \uc120\ud0dd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2,5 highlight:0 decode:true\">SELECT airport.airportname, route.airlineid\r\nFROM `travel-sample` airport LEFT JOIN `travel-sample` route\r\n     ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"Denver\" AND airport.country = \"United States\"\r\n  AND route.airlineid IS MISSING;<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608\uc81c 8: ANSI \uc624\ub978\ucabd \uc678\ubd80 \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">ANSI \uc624\ub978\ucabd \uc678\ubd80 \uc870\uc778\uc740 \uc870\uc778\uc774 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uc624\ub978\ucabd \ubb38\uc11c\ub97c \ubcf4\uc874\ud55c\ub2e4\ub294 \uc810\uc744 \uc81c\uc678\ud558\uba74 ANSI \uc67c\ucabd \uc678\ubd80 \uc870\uc778\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4. \uc608\uc81c 7\uc758 \ucffc\ub9ac\ub294 \uc67c\ucabd\uacfc \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4\ub97c \ubc14\uafb8\uace0 LEFT \ud0a4\uc6cc\ub4dc\ub97c RIGHT \ud0a4\uc6cc\ub4dc\ub85c \ubc14\uafb8\uc5b4 \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT airport.airportname, route.airlineid\r\nFROM `travel-sample` route RIGHT JOIN `travel-sample` airport\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"Denver\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc870\uc778 \uc0ac\uc591\uc5d0\uc11c \uacf5\ud56d\uacfc \uacbd\ub85c\ub97c \uc804\ud658\ud588\uc9c0\ub9cc \uacbd\ub85c\uac00 \uc774 \uc678\ubd80 \uc870\uc778\uc5d0\uc11c \uc5ec\uc804\ud788 \uc885\uc18d\uc801\uc778 \ucabd\uc5d0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uacbd\ub85c\uc758 \ud544\ud130(\uc774\uc81c \uc67c\ucabd \ud0a4 \uacf5\uac04)\uac00 \uc870\uc778\uc758 ON \uc808\uc5d0 \uc5ec\uc804\ud788 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc624\ub978\ucabd \uc678\ubd80 \uc870\uc778\uc740 \ub0b4\ubd80\uc801\uc73c\ub85c \uc67c\ucabd \uc678\ubd80 \uc870\uc778\uc73c\ub85c \ubcc0\ud658\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac\uc5d0 \uc5ec\ub7ec \uc870\uc778\uc774 \ud3ec\ud568\ub41c \uacbd\uc6b0 RIGHT OUTER JOIN\uc740 \uc9c0\uc815\ub41c \uccab \ubc88\uc9f8 \uc870\uc778\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. N1QL\uc740 \uc120\ud615 \uc870\uc778\ub9cc \uc9c0\uc6d0\ud558\ubbc0\ub85c(\uc989, \uac01 \uc870\uc778\uc758 \uc624\ub978\ucabd\uc740 \ub2e8\uc77c \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5ec\uc57c \ud568), RIGHT OUTER JOIN\uc774 \uc9c0\uc815\ub41c \uccab \ubc88\uc9f8 \uc870\uc778\uc774 \uc544\ub2cc \uacbd\uc6b0 LEFT OUTER JOIN\uc73c\ub85c \ubcc0\ud658\ud55c \ud6c4 \uc870\uc778\uc758 \uc624\ub978\ucabd\uc5d0 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \uc5ec\ub7ec \ud0a4 \uc2a4\ud398\uc774\uc2a4\uac00 \ud3ec\ud568\ub418\uac8c \ub429\ub2c8\ub2e4. \uccab \ubc88\uc9f8 \uc870\uc778 \uc774\uc678\uc758 \uc704\uce58\uc5d0 RIGHT OUTER JOIN\uc744 \uc9c0\uc815\ud558\uba74 \uad6c\ubb38 \uc624\ub958\uac00 \ubc18\ud658\ub429\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 9: \ud574\uc2dc \uc870\uc778\uc744 \uc0ac\uc6a9\ud55c ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">N1QL\uc740 ANSI JOIN\uc5d0 \ub300\ud574 \ub450 \uac00\uc9c0 \uc870\uc778 \ubc29\ubc95\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. ANSI JOIN\uc758 \uae30\ubcf8 \uc870\uc778 \ubc29\ubc95\uc740 \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc785\ub2c8\ub2e4. \ub2e4\ub978 \ubc29\ubc95\uc740 \ud574\uc2dc \uc870\uc778\uc785\ub2c8\ub2e4. \ud574\uc2dc \uc870\uc778\uc740 \ud574\uc2dc \ud14c\uc774\ube14\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc870\uc778 \uc591\ucabd\uc758 \ubb38\uc11c\ub97c \uc77c\uce58\uc2dc\ud0b5\ub2c8\ub2e4. \ud574\uc2dc \uc870\uc778\uc5d0\ub294 \ube4c\ub4dc \ucabd\uacfc \ud504\ub85c\ube0c \ucabd\uc774 \uc788\uc73c\uba70, \ube4c\ub4dc \ucabd\uc758 \uac01 \ubb38\uc11c\ub294 \ube4c\ub4dc \ucabd\uc758 \ub3d9\uc77c \uc870\uc778 \uc2dd \uac12\uc744 \uae30\ubc18\uc73c\ub85c \ud574\uc2dc \ud14c\uc774\ube14\uc5d0 \uc0bd\uc785\ub418\uace0, \uc774\ud6c4 \ud504\ub85c\ube0c \ucabd\uc758 \uac01 \ubb38\uc11c\ub294 \ud504\ub85c\ube0c \ucabd\uc758 \ub3d9\uc77c \uc870\uc778 \uc2dd \uac12\uc744 \uae30\ubc18\uc73c\ub85c \ud574\uc2dc \ud14c\uc774\ube14\uc5d0\uc11c \uc870\ud68c\ub429\ub2c8\ub2e4. \uc77c\uce58\ud558\ub294 \ud56d\ubaa9\uc774 \ubc1c\uacac\ub418\uba74 \uc870\uc778 \uc791\uc5c5\uc774 \uc218\ud589\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778\uc740 \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc5d0 \ube44\ud574 \uc870\uc778\uc774 \ud070 \uacbd\uc6b0, \uc608\ub97c \ub4e4\uc5b4 \uc870\uc778\uc758 \uc67c\ucabd\uc5d0 \uc218\ub9cc \uac1c \uc774\uc0c1\uc758 \ubb38\uc11c\uac00 \uc788\ub294 \uacbd\uc6b0(\ud544\ud130 \uc801\uc6a9 \ud6c4)\uc5d0 \ub354 \ud6a8\uc728\uc801\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc67c\ucabd\uc758 \uac01 \ubb38\uc11c\uc5d0 \ub300\ud574 \uc624\ub978\ucabd \uc778\ub371\uc2a4\uc5d0\uc11c \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \uc218\ud589\ud574\uc57c \ud569\ub2c8\ub2e4. \uc67c\ucabd\uc5d0\uc11c \ubb38\uc11c \uc218\uac00 \uc99d\uac00\ud558\uba74 \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc758 \ud6a8\uc728\uc131\uc774 \ub5a8\uc5b4\uc9d1\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778\uc758 \uacbd\uc6b0 \uc870\uc778\uc758 \uc791\uc740 \ucabd\uc740 \ud574\uc2dc \ud14c\uc774\ube14\uc744 \uc791\uc131\ud558\ub294 \ub370 \uc0ac\uc6a9\ud558\uace0 \uc870\uc778\uc758 \ud070 \ucabd\uc740 \ud574\uc2dc \ud14c\uc774\ube14\uc744 \ud504\ub85c\ube59\ud558\ub294 \ub370 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4. \ud574\uc2dc \uc870\uc778\uc740 \uc778\uba54\ubaa8\ub9ac \ud574\uc2dc \ud14c\uc774\ube14\uc774 \ud544\uc694\ud558\ubbc0\ub85c \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\ubcf4\ub2e4 \ub354 \ub9ce\uc740 \uba54\ubaa8\ub9ac\uac00 \ud544\uc694\ud558\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud574\uc57c \ud569\ub2c8\ub2e4. \ud544\uc694\ud55c \uba54\ubaa8\ub9ac\uc758 \uc591\uc740 \ube4c\ub4dc \uce21\uc758 \ubb38\uc11c \uc218\uc640 \uac01 \ubb38\uc11c\uc758 \ud3c9\uade0 \ud06c\uae30\uc5d0 \ube44\ub840\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778\uc740 \ub2e4\uc74c\uc5d0\uc11c \uc9c0\uc6d0\ub429\ub2c8\ub2e4. <strong>\uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc5d0\ub514\uc158 \uc804\uc6a9<\/strong>. \ud574\uc2dc \uc870\uc778\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 ANSI JOIN\uc758 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 USE HASH \ud78c\ud2b8\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \uc608 1\uacfc \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route USE HASH(build)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">USE HASH(build) \ud78c\ud2b8\ub294 N1QL \ud50c\ub798\ub108\uac00 \uc9c0\uc815\ub41c ANSI JOIN\uc5d0 \ub300\ud574 \ud574\uc2dc \uc870\uc778\uc744 \uc218\ud589\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud558\uba70, \uc624\ub978\ucabd \ud0a4 \uacf5\uac04(\"\uacbd\ub85c\")\uc740 \ud574\uc2dc \uc870\uc778\uc758 \ube4c\ub4dc \uce21\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc124\uba85\uc744 \ubcf4\uba74 \ud574\uc2dc \uc870\uc778 \uc5f0\uc0b0\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">{\r\n\u00a0\u00a0\u00a0\"#operator\": \"HashJoin\",\r\n\u00a0\u00a0\u00a0\"build_aliases\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"route\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"build_exprs\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`sourceairport`))\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"on_clause\": \"(((`airport`.`faa`) = cover ((`route`.`sourceairport`))) and (cover ((`route`.`type`)) = \\\"route\\\"))\",\r\n\u00a0\u00a0\u00a0\"probe_exprs\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"~child\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"route\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"covers\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`sourceairport`))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`destinationairport`))\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((meta(`route`).`id`))\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"filter_covers\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`type`))\": \"route\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"route_airports\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"f1f4b9fbe85e45fd\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"null\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n}\r\n<\/pre>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778 \uc5f0\uc0b0\uc790\uc758 \uc790\uc2dd \uc5f0\uc0b0\uc790(\"~child\")\ub294 \ud56d\uc0c1 \ud574\uc2dc \uc870\uc778\uc758 \ube4c\ub4dc \ucabd\uc785\ub2c8\ub2e4. \uc774 \ucffc\ub9ac\uc758 \uacbd\uc6b0, \uc624\ub978\ucabd \ud0a4 \uacf5\uac04 \"route\"\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \uc2a4\uce94\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\"route\" \ubb38\uc11c\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \uacbd\uc6b0 \ub354 \uc774\uc0c1 \uc67c\ucabd \ud0a4 \uacf5\uac04(\"airport\")\uc758 \uc815\ubcf4\ub97c \uc778\ub371\uc2a4 \uac80\uc0c9 \ud0a4\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4(\uc704 \uc124\uba85 \uc139\uc158\uc758 \"spans\" \uc815\ubcf4 \ucc38\uc870). \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uacfc \ub2ec\ub9ac \"\uacbd\ub85c\"\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \uc2a4\uce94\uc740 \ub354 \uc774\uc0c1 \uc67c\ucabd\uc758 \uac1c\ubcc4 \ubb38\uc11c\uc5d0 \uc5f0\uacb0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"\uacf5\ud56d\" \ubb38\uc11c\uc758 \uac12\uc744 \"\uacbd\ub85c\"\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4 \uc2a4\uce94\uc758 \uac80\uc0c9 \ud0a4\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc704 \ucffc\ub9ac\uc5d0 \uc0ac\uc6a9\ub41c USE HASH(build) \ud78c\ud2b8\ub294 \ud50c\ub798\ub108\uac00 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc744 \ud574\uc2dc \uc870\uc778\uc758 \ube4c\ub4dc \uce21\uc73c\ub85c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud569\ub2c8\ub2e4. \ud50c\ub798\ub108\uac00 \ud574\uc2dc \uc870\uc778\uc758 \ud504\ub85c\ube0c \uce21\uc73c\ub85c \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d USE HASH(probe) \ud78c\ud2b8\ub97c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route USE HASH(probe)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc124\uba85\uc744 \ubcf4\uba74 \ud574\uc2dc\uc870\uc778 \uc5f0\uc0b0\uc790\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">{\r\n\u00a0\u00a0\u00a0\"#operator\": \"HashJoin\",\r\n\u00a0\u00a0\u00a0\"build_aliases\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"airport\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"build_exprs\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"(`airport`.`faa`)\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"on_clause\": \"(((`airport`.`faa`) = cover ((`route`.`sourceairport`))) and (cover ((`route`.`type`)) = \\\"route\\\"))\",\r\n\u00a0\u00a0\u00a0\"probe_exprs\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cover ((`route`.`sourceairport`))\"\r\n\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\"~child\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IntersectScan\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"scans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"airport\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"airport_city_country\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"8e782fd1b124eec3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"\\\"San Jose\\\"\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"\\\"San Jose\\\"\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"\\\"United States\\\"\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"\\\"United States\\\"\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"airport\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"airport_faa\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"c302afbf811470f5\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"null\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Fetch\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"airport\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n}<\/pre>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc\uc870\uc778\uc758 \uc790\uc2dd \uc5f0\uc0b0\uc790(\"~child\")\ub294 ANSI JOIN\uc758 \uc67c\ucabd \ud0a4 \uacf5\uac04\uc778 \"\uacf5\ud56d\"\uc5d0\uc11c \uad50\ucc28 \uc778\ub371\uc2a4 \uc2a4\uce94\uc744 \ud55c \ub2e4\uc74c \uac00\uc838 \uc624\uae30 \uc5f0\uc0b0\uc790\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">USE HASH \ud78c\ud2b8\ub294 ANSI JOIN\uc758 \uc624\ub978\ucabd \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5d0\ub9cc \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc744 \ud574\uc2dc \uc870\uc778\uc758 \ube4c\ub4dc \uce21\uc73c\ub85c \ud560\uc9c0 \uc544\ub2c8\uba74 \ud504\ub85c\ube0c \uce21\uc73c\ub85c \ud560\uc9c0 \uc5ec\ubd80\uc5d0 \ub530\ub77c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 USE HASH(\ube4c\ub4dc) \ub610\ub294 USE HASH(\ud504\ub85c\ube0c) \ud78c\ud2b8\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778\uc740 USE HASH(build) \ub610\ub294 USE HASH(probe) \ud78c\ud2b8\uac00 \uc9c0\uc815\ub41c \uacbd\uc6b0\uc5d0\ub9cc \uace0\ub824\ub429\ub2c8\ub2e4. \ud574\uc2dc \uc870\uc778\uc774 \uc791\ub3d9\ud558\ub824\uba74 \ub3d9\uc77c\uc131 \uc870\uc778 \uc870\uac74\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc5d0\ub294 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \uc801\uc808\ud55c \ubcf4\uc870 \uc778\ub371\uc2a4\uac00 \ud544\uc694\ud558\uc9c0\ub9cc \ud574\uc2dc \uc870\uc778\uc5d0\ub294 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4(\uae30\ubcf8 \uc778\ub371\uc2a4 \uc2a4\uce94\uc740 \ud574\uc2dc \uc870\uc778\uc758 \uc635\uc158\uc785\ub2c8\ub2e4). \uadf8\ub7ec\ub098 \ud574\uc2dc \uc870\uc778\uc774 \uc791\ub3d9\ud558\ub824\uba74 \uc778\uba54\ubaa8\ub9ac \ud574\uc2dc \ud14c\uc774\ube14\uc774 \ud544\uc694\ud558\ubbc0\ub85c \ud574\uc2dc \uc870\uc778\uc740 \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\ubcf4\ub2e4 \ub354 \ub9ce\uc740 \uba54\ubaa8\ub9ac\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \ub610\ud55c \ud574\uc2dc \uc870\uc778\uc740 '\ucc28\ub2e8' \uc791\uc5c5\uc73c\ub85c \uac04\uc8fc\ub418\ubbc0\ub85c \ucffc\ub9ac \uc5d4\uc9c4\uc774 \uccab \ubc88\uc9f8 \uc870\uc778 \uacb0\uacfc\ub97c \uc0dd\uc131\ud558\uae30 \uc804\uc5d0 \ud574\uc2dc \ud14c\uc774\ube14 \uc791\uc131\uc744 \uc644\ub8cc\ud574\uc57c \ud558\ubbc0\ub85c \ucc98\uc74c \uba87 \uac1c\uc758 \uacb0\uacfc\ub9cc \ube60\ub974\uac8c \ud544\uc694\ud55c \ucffc\ub9ac(\uc608: LIMIT \uc808 \uc0ac\uc6a9)\uc758 \uacbd\uc6b0 \ud574\uc2dc \uc870\uc778\uc774 \uc801\ud569\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">USE HASH \ud78c\ud2b8\uac00 \uc9c0\uc815\ub418\uc5c8\uc9c0\ub9cc \ud574\uc2dc \uc870\uc778\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0(\uc608: \ub3d9\uc77c\uc131 \uc870\uc778 \uc870\uac74\uc774 \uc5c6\ub294 \uacbd\uc6b0) \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc774 \uace0\ub824\ub429\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 10: \uc5ec\ub7ec \ud78c\ud2b8\uac00 \uc788\ub294 ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc774\uc81c ANSI JOIN\uc758 \uc624\ub978\ucabd\uc5d0 \uc788\ub294 \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5d0 \ub300\ud574 \uc5ec\ub7ec \ud78c\ud2b8\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 USE HASH \ud78c\ud2b8\ub97c USE INDEX \ud78c\ud2b8\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT DISTINCT route.destinationairport\r\nFROM `travel-sample` airport JOIN `travel-sample` route USE HASH(probe) INDEX(route_airports)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\" AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc5ec\ub7ec \ud78c\ud2b8\ub97c \ud568\uaed8 \uc0ac\uc6a9\ud560 \ub54c\ub294 \uc704\uc758 \uc608\uc2dc\ucc98\ub7fc \"USE\" \ud0a4\uc6cc\ub4dc\ub97c \ud55c \ubc88\ub9cc \uc9c0\uc815\ud558\uba74 \ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc0ac\uc6a9 \ud78c\ud2b8\uc640 \ud0a4 \uc0ac\uc6a9 \ud78c\ud2b8\ub97c \uacb0\ud569\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 11: \ub2e4\uc911 \uc870\uc778\uc744 \uc0ac\uc6a9\ud558\ub294 ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">ANSI JOIN\uc740 \uc11c\ub85c \uc5f0\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc778\ub371\uc2a4(\uc608\uc81c 1\uacfc \ub3d9\uc77c\ud55c route_airports \uc778\ub371\uc2a4):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";\r\nCREATE INDEX airline_iata ON `travel-sample`(iata) WHERE type = \"airline\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4(\uc608 1\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airport_city_country ON `travel-sample`(\ub3c4\uc2dc, \uad6d\uac00) WHERE type = \"airport\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">SELECT DISTINCT airline.name\r\nFROM `travel-sample` airport INNER JOIN `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\n\u00a0\u00a0INNER JOIN `travel-sample` airline\r\n\u00a0\u00a0\u00a0\u00a0ON route.airline = airline.iata AND airline.type = \"airline\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\"\r\n\u00a0AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac\uc5d0 USE HASH \ud78c\ud2b8\uac00 \uc9c0\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc124\uba85\uc5d0 \ub450 \uac1c\uc758 NestedLoopJoin \uc5f0\uc0b0\uc790\uac00 \ud45c\uc2dc\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud574\uc2dc \uc870\uc778\uacfc \uc911\ucca9 \ub8e8\ud504 \uc870\uc778\uc744 \ud63c\ud569\ud558\ub824\uba74 ANSI \uc870\uc778 \uccb4\uc778\uc5d0 \uc788\ub294 \uc870\uc778 \uc911 \ud558\ub098\uc5d0 USE HASH \ud78c\ud2b8\ub97c \ucd94\uac00\ud558\uba74 \ub429\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:4 highlight:0 decode:true\">SELECT DISTINCT airline.name\r\nFROM `travel-sample` airport INNER JOIN `travel-sample` route\r\n     ON airport.faa = route.sourceairport AND route.type = \"route\"\r\n   INNER JOIN `travel-sample` airline USE HASH(build)\r\n     ON route.airline = airline.iata AND airline.type = \"airline\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\"\r\n  AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\ub610\ub294<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT DISTINCT airline.name\r\nFROM `travel-sample` airport INNER JOIN `travel-sample` route USE HASH(probe)\r\n\u00a0\u00a0\u00a0\u00a0ON airport.faa = route.sourceairport AND route.type = \"route\"\r\n\u00a0\u00a0INNER JOIN `travel-sample` airline\r\n\u00a0\u00a0\u00a0\u00a0ON route.airline = airline.iata AND airline.type = \"airline\"\r\nWHERE airport.type = \"airport\" AND airport.city = \"San Jose\"\r\n\u00a0AND airport.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\ub9c8\uc9c0\ub9c9 \ucffc\ub9ac\uc5d0 \ub300\ud55c \uc2dc\uac01\uc801 \uc124\uba85\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4830\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain.png\" alt=\"\" width=\"2204\" height=\"1360\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain.png 2204w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-300x185.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1024x632.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-768x474.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1536x948.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-2048x1264.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-multiple-joins-Visual-Explain-1320x815.png 1320w\" sizes=\"auto, (max-width: 2204px) 100vw, 2204px\" \/><\/p>\n<p><span style=\"font-weight: 400\">\uc55e\uc11c \uc5b8\uae09\ud588\ub4ef\uc774 N1QL\uc740 \uc120\ud615 \uc870\uc778\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc989, \uac01 \uc870\uc778\uc758 \uc624\ub978\ucabd\uc774 \ud0a4 \uc2a4\ud398\uc774\uc2a4\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 12: \uc624\ub978\ucabd \ubc30\uc5f4\uc744 \ud3ec\ud568\ud558\ub294 ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">ANSI JOIN\uc740 SQL \ud45c\uc900\uc5d0\uc11c \ube44\ub86f\ub418\uc5c8\uc9c0\ub9cc, Couchbase N1QL\uc740 JSON \ubb38\uc11c\ub97c \ucc98\ub9ac\ud558\uace0 \ubc30\uc5f4\uc740 JSON\uc758 \uc911\uc694\ud55c \uce21\uba74\uc774\uae30 \ub54c\ubb38\uc5d0 \ubc30\uc5f4\uc5d0\ub3c4 ANSI JOIN \uc9c0\uc6d0\uc744 \ud655\uc7a5\ud588\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ubc30\uc5f4 \ucc98\ub9ac\uc758 \uc608\ub294 \"default\" \ubc84\ud0b7\uc744 \uc0dd\uc131\ud558\uace0 \ub2e4\uc74c \ubb38\uc11c\ub97c \uc0bd\uc785\ud558\uc138\uc694:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">INSERT INTO default (KEY,VALUE) VALUES(\"test11_ansijoin\", {\"c11\": 1, \"c12\": 10, \"a11\": [ 1, 2, 3, 4 ], \"type\": \"left\"}),\r\n                                VALUES(\"test12_ansijoin\", {\"c11\": 2, \"c12\": 20, \"a11\": [ 3, 3, 5, 10 ], \"type\": \"left\"}),\r\n                                VALUES(\"test13_ansijoin\", {\"c11\": 3, \"c12\": 30, \"a11\": [ 3, 4, 20, 40 ], \"type\": \"left\"}),\r\n                                VALUES(\"test14_ansijoin\", {\"c11\": 4, \"c12\": 40, \"a11\": [ 30, 30, 30 ], \"type\": \"left\"});\r\nINSERT INTO default (KEY,VALUE) VALUES(\"test21_ansijoin\", {\"c21\": 1, \"c22\": 10, \"a21\": [ 1, 10, 20], \"a22\": [ 1, 2, 3, 4 ], \"type\": \"right\"}),\r\n                                VALUES(\"test22_ansijoin\", {\"c21\": 2, \"c22\": 20, \"a21\": [ 2, 3, 30], \"a22\": [ 3, 5, 10, 3 ], \"type\": \"right\"}),\r\n                                VALUES(\"test23_ansijoin\", {\"c21\": 2, \"c22\": 21, \"a21\": [ 2, 20, 30], \"a22\": [ 3, 3, 5, 10 ], \"type\": \"right\"}),\r\n                                VALUES(\"test24_ansijoin\", {\"c21\": 3, \"c22\": 30, \"a21\": [ 3, 10, 30], \"a22\": [ 3, 4, 20, 40 ], \"type\": \"right\"}),\r\n                                VALUES(\"test25_ansijoin\", {\"c21\": 3, \"c22\": 31, \"a21\": [ 3, 20, 40], \"a22\": [ 4, 3, 40, 20 ], \"type\": \"right\"}),\r\n                                VALUES(\"test26_ansijoin\", {\"c21\": 3, \"c22\": 32, \"a21\": [ 4, 14, 24], \"a22\": [ 40, 20, 4, 3 ], \"type\": \"right\"}),\r\n                                VALUES(\"test27_ansijoin\", {\"c21\": 5, \"c22\": 50, \"a21\": [ 5, 15, 25], \"a22\": [ 1, 2, 3, 4 ], \"type\": \"right\"}),\r\n                                VALUES(\"test28_ansijoin\", {\"c21\": 6, \"c22\": 60, \"a21\": [ 6, 16, 26], \"a22\": [ 3, 3, 5, 10 ], \"type\": \"right\"}),\r\n                                VALUES(\"test29_ansijoin\", {\"c21\": 7, \"c22\": 70, \"a21\": [ 7, 17, 27], \"a22\": [ 30, 30, 30 ], \"type\": \"right\"}),\r\n                                VALUES(\"test30_ansijoin\", {\"c21\": 8, \"c22\": 80, \"a21\": [ 8, 18, 28], \"a22\": [ 30, 30, 30 ], \"type\": \"right\"});<\/pre>\n<p><span style=\"font-weight: 400\">\uadf8\ub7f0 \ub2e4\uc74c \ub2e4\uc74c \uc778\ub371\uc2a4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX default_ix_left on default(c11, DISTINCT a11) WHERE type = \"left\";\r\nCREATE INDEX default_ix_right on default(c21, DISTINCT a21) WHERE type = \"right\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc870\uc778 \uc870\uac74\uc5d0 ANSI JOIN\uc758 \uc624\ub978\ucabd\uc5d0 \ubc30\uc5f4\uc774 \ud3ec\ud568\ub418\ub294 \uacbd\uc6b0 \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \ubc30\uc5f4 \uc778\ub371\uc2a4\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT b1.c11, b2.c21, b2.c22\r\nFROM default b1 JOIN default b2\r\n\u00a0\u00a0\u00a0\u00a0ON b2.c21 = b1.c11 AND ANY v IN b2.a21 SATISFIES v = b1.c12 END AND b2.type = \"right\"\r\nWHERE b1.type = \"left\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc870\uc778 \uc870\uac74\uc758 \uc77c\ubd80\ub294 \uc67c\ucabd \ud544\ub4dc b1.c12\uac00 \uc624\ub978\ucabd \ubc30\uc5f4 b2.a21\uc758 \ubaa8\ub4e0 \uc694\uc18c\uc640 \uc77c\uce58\ud560 \uc218 \uc788\uc74c\uc744 \uc9c0\uc815\ud558\ub294 ANY \uc808\uc774\ub77c\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \uc774 \uc870\uc778\uc774 \uc81c\ub300\ub85c \uc791\ub3d9\ud558\ub824\uba74 b2.a21\uc5d0 \ub300\ud55c \ubc30\uc5f4 \uc778\ub371\uc2a4(\uc608: \uc704\uc5d0\uc11c \ub9cc\ub4e0 default_ix_right \uc778\ub371\uc2a4)\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc124\uba85 \uacc4\ud68d\uc5d0\ub294 \ubc30\uc5f4 \uc778\ub371\uc2a4 default_ix_right\uc5d0\uc11c \ud558\uc704 \uc5f0\uc0b0\uc790\uac00 \ubcc4\uac1c\uc758 \uc2a4\uce94\uc778 NestedLoopJoin\uc774 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">{\r\n\u00a0\u00a0\u00a0\"#operator\": \"NestedLoopJoin\",\r\n\u00a0\u00a0\u00a0\"alias\": \"b2\",\r\n\u00a0\u00a0\u00a0\"on_clause\": \"((((`b2`.`c21`) = (`b1`.`c11`)) and any `v` in (`b2`.`a21`) satisfies (`v` = (`b1`.`c12`)) end) and ((`b2`.`type`) = \\\"right\\\"))\",\r\n\u00a0\u00a0\u00a0\"~child\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Sequence\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"~children\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"DistinctScan\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"scan\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"IndexScan3\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"b2\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index\": \"default_ix_right\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_id\": \"ef4e7fa33f33dce\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"index_projection\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"primary_key\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"nested_loop\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"spans\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"exact\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"range\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`b1`.`c11`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`b1`.`c11`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"high\": \"(`b1`.`c12`)\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inclusion\": 3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"low\": \"(`b1`.`c12`)\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"using\": \"gsi\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"#operator\": \"Fetch\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"as\": \"b2\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keyspace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"namespace\": \"default\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"nested_loop\": true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 13: \uc67c\ucabd \ubc30\uc5f4\uc744 \ud3ec\ud568\ud558\ub294 ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc67c\ucabd\uc5d0 \ubc30\uc5f4\uc774 \ud3ec\ud568\ub41c ANSI JOIN\uc758 \uacbd\uc6b0 \uc870\uc778\uc744 \uc218\ud589\ud558\ub294 \ub370\ub294 \ub450 \uac00\uc9c0 \uc635\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h5><span style=\"font-weight: 400\">\uc635\uc158 1: UNNEST \uc0ac\uc6a9<\/span><\/h5>\n<p><span style=\"font-weight: 400\">\uc870\uc778\uc744 \uc218\ud589\ud558\uae30 \uc804\uc5d0 UNNEST \uc808\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc67c\ucabd \ubc30\uc5f4\uc744 \uba3c\uc800 \ud3c9\ud3c9\ud558\uac8c \ub9cc\ub4ed\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2 highlight:0 decode:true\">SELECT b1.c11, b2.c21, b2.c22\r\nFROM default b1 UNNEST b1.a11 AS ba1\r\n\u00a0\u00a0\u00a0\u00a0JOIN default b2 ON ba1 = b2.c21 AND b2.type = \"right\"\r\nWHERE b1.c11 = 2 AND b1.type = \"left\";<\/pre>\n<p><span style=\"font-weight: 400\">UNNEST \uc774\ud6c4 \ubc30\uc5f4\uc740 \uac1c\ubcc4 \ud544\ub4dc\uac00 \ub418\uace0 \ud6c4\uc18d \uc870\uc778\uc740 \uc591\ucabd\uc758 \ud544\ub4dc\uac00 \uc788\ub294 \"\uc77c\ubc18\" ANSI JOIN\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h5><span style=\"font-weight: 400\">\uc635\uc158 2: IN\uc808 \uc0ac\uc6a9<\/span><\/h5>\n<p><span style=\"font-weight: 400\">\ub610\ub294 IN \uc808\uc744 \uc870\uc778 \uc870\uac74\uc73c\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT b1.c11, b2.c21, b2.c22\r\nFROM default b1 JOIN default b2\r\n\u00a0\u00a0\u00a0\u00a0ON b2.c21 IN b1.a11 AND b2.type = \"right\"\r\nWHERE b1.c11 = 2 AND b1.type = \"left\";<\/pre>\n<p><span style=\"font-weight: 400\">IN\uc808\uc740 \uc67c\ucabd \ud0a4 \uacf5\uac04(\"b1.a11\")\uc5d0 \uc788\ub294 \ubc30\uc5f4\uc758 \uc694\uc18c\uac00 \uc624\ub978\ucabd \ud544\ub4dc(\"b2.c21\")\uc640 \uc77c\uce58\ud560 \ub54c \ucda9\uc871\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ub450 \uc635\uc158 \uc0ac\uc774\uc5d0\ub294 \uc758\ubbf8\uc0c1 \ucc28\uc774\uac00 \uc788\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \ubc30\uc5f4\uc5d0 \uc911\ubcf5\ub41c \ubb38\uc11c\uac00 \uc788\ub294 \uacbd\uc6b0 UNNEST \uc635\uc158\uc740 \uc911\ubcf5 \uc5ec\ubd80\ub97c \uace0\ub824\ud558\uc9c0 \uc54a\uace0 \ubc30\uc5f4\uc758 \uc694\uc18c \uc218\ub9cc\ud07c \uc67c\ucabd \ubb38\uc11c\ub97c \ud3c9\ud0c4\ud654\ud558\ubbc0\ub85c \uc911\ubcf5\ub41c \uacb0\uacfc\uac00 \ub098\uc62c \uc218 \uc788\uc9c0\ub9cc, IN \uc808 \uc635\uc158\uc740 \ubc30\uc5f4\uc5d0 \uc911\ubcf5\ub41c \uc694\uc18c\uac00 \uc788\ub294 \uacbd\uc6b0 \uc911\ubcf5\ub41c \uacb0\uacfc\ub97c \uc0dd\uc131\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc88c\uce21 \uc678\ubd80 \uc870\uc778\uc744 \uc218\ud589\ud558\uba74 UNNEST \uc635\uc158\uc73c\ub85c \ubc30\uc5f4\uc744 \ud3c9\ud0c4\ud654\ud558\uae30 \ub54c\ubb38\uc5d0 \ubcf4\uc874\ub418\ub294 \ubb38\uc11c \uc218\uac00 \ub2ec\ub77c\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc0ac\uc6a9\uc790\ub294 \ucffc\ub9ac\uc5d0 \ud544\uc694\ud55c \uc758\ubbf8\ub97c \ubc18\uc601\ud558\ub294 \uc635\uc158\uc744 \uc120\ud0dd\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 14: \uc591\ucabd\uc758 \ubc30\uc5f4\uc744 \ud3ec\ud568\ud558\ub294 ANSI \uc870\uc778<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\ud754\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc \uc870\uc778\uc758 \uc591\ucabd\uc774 \ubc30\uc5f4\uc778 \uacbd\uc6b0 ANSI JOIN\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacbd\uc6b0 \uc704\uc5d0\uc11c \uc124\uba85\ud55c \uae30\uc220\uc744 \uc870\ud569\ud558\uc5ec \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ub978\ucabd\uc758 \ubc30\uc5f4\uc744 \ucc98\ub9ac\ud558\ub824\uba74 \ubc30\uc5f4 \uc778\ub371\uc2a4\ub97c \uc0ac\uc6a9\ud558\uace0, \uc67c\ucabd\uc758 \ubc30\uc5f4\uc744 \ucc98\ub9ac\ud558\ub824\uba74 UNNEST \uc635\uc158 \ub610\ub294 IN\uc808 \uc635\uc158\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<h5><span style=\"font-weight: 400\">\uc635\uc158 1: UNNEST \uc808 \uc0ac\uc6a9<\/span><\/h5>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:2-3 highlight:0 decode:true\">SELECT b1.c11, b2.c21, b2.c22\r\nFROM default b1 UNNEST b1.a11 AS ba1\r\n\u00a0\u00a0\u00a0\u00a0JOIN default b2 ON b2.c21 = b1.c11 AND ANY v IN b2.a21 SATISFIES v = ba1 END AND b2.type = \"right\"\r\nWHERE b1.type = \"left\";<\/pre>\n<h5><span style=\"font-weight: 400\">\uc635\uc158 2: IN\uc808 \uc0ac\uc6a9<\/span><\/h5>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT b1.c11, b2.c21, b2.c22\r\nFROM default b1 JOIN default b2\r\n\u00a0\u00a0\u00a0\u00a0ON b2.c21 = b1.c11 AND ANY v IN b2.a21 SATISFIES v IN b1.a11 END AND b2.type = \"right\"\r\nWHERE b1.type = \"left\";<\/pre>\n<p><span style=\"font-weight: 400\">\ub2e4\uc2dc \ub9d0\ud558\uc9c0\ub9cc \ub450 \uc635\uc158\uc740 \uc758\ubbf8\uc801\uc73c\ub85c \ub3d9\uc77c\ud558\uc9c0 \uc54a\uc73c\uba70 \uc11c\ub85c \ub2e4\ub978 \uacb0\uacfc\ub97c \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc6d0\ud558\ub294 \uc758\ubbf8\ub97c \ubc18\uc601\ud558\ub294 \uc635\uc158\uc744 \uc120\ud0dd\ud558\uc138\uc694.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">\uc608 15: \uc870\ud68c \uc870\uc778 \ub9c8\uc774\uadf8\ub808\uc774\uc158<\/span><\/h4>\n<p><span style=\"font-weight: 400\">N1QL\uc740 \uc774\uc804 \ubc84\uc804\uacfc\uc758 \ud638\ud658\uc131\uc744 \uc704\ud574 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc744 \uacc4\uc18d \uc9c0\uc6d0\ud558\uc9c0\ub9cc, \ub3d9\uc77c\ud55c \ucffc\ub9ac\uc5d0\uc11c ANSI JOIN\uacfc \uc870\ud68c \uc870\uc778 \ub610\ub294 \uc778\ub371\uc2a4 \uc870\uc778\uc744 \ud63c\ud569\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. \uae30\uc874 \ucffc\ub9ac\ub97c \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc5d0\uc11c ANSI JOIN \uad6c\ubb38\uc73c\ub85c \ubcc0\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc5d0\uc11c\ub294 \uc870\ud68c \uc870\uc778\uc744 ANSI JOIN \uad6c\ubb38\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec \uc90d\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac \uc18d\ub3c4\ub97c \ub192\uc774\ub824\uba74 \ub2e4\uc74c \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4(\uc608\uc81c 1\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc870\ud68c \uc870\uc778 \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\ub294 \ucffc\ub9ac\uc785\ub2c8\ub2e4(ON KEYS \uc808\uc744 \ucc38\uace0\ud558\uc138\uc694):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT airline.name\r\nFROM `travel-sample` route JOIN `travel-sample` airline\r\n\u00a0\u00a0\u00a0\u00a0ON KEYS route.airlineid\r\nWHERE route.type = \"route\" AND route.sourceairport = \"SFO\" AND route.destinationairport = \"JFK\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc870\ud68c \uc870\uc778\uc5d0\uc11c \uc870\uc778\uc758 \uc67c\ucabd(\"route\")\uc740 \uc870\uc778\uc758 \uc624\ub978\ucabd(\"airline\")\uc5d0 \ub300\ud55c \ubb38\uc11c \ud0a4\ub97c \uc0dd\uc131\ud574\uc57c \ud558\uba70, \uc774\ub294 ON KEYS \uc808\uc744 \ud1b5\ud574 \uc218\ud589\ub429\ub2c8\ub2e4. \uc870\uc778 \uc870\uac74(\uad6c\ubb38\uc5d0\uc11c \uc554\uc2dc\ub428)\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <em>route.airlineid = \uba54\ud0c0(\ud56d\uacf5\uc0ac).id<\/em>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c ANSI JOIN \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT airline.name\r\nFROM `travel-sample` route JOIN `travel-sample` airline\r\n\u00a0\u00a0\u00a0\u00a0ON route.airlineid = meta(airline).id\r\nWHERE route.type = \"route\" AND route.sourceairport = \"SFO\" AND route.destinationairport = \"JFK\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc774 \uc608\uc81c\uc5d0\uc11c\ub294 ON KEYS \uc808\uc5d0 \ub2e8\uc77c \ubb38\uc11c \ud0a4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. ON KEYS \uc808\uc5d0 \ubb38\uc11c \ud0a4 \ubc30\uc5f4\uc774 \ud3ec\ud568\ub420 \uc218 \uc788\uc73c\uba70, \uc774 \uacbd\uc6b0 \ubcc0\ud658\ub41c ON \uc808\uc740 \ub3d9\ub4f1 \uc808\uc774 \uc544\ub2cc IN \uc808\uc758 \ud615\ud0dc\uac00 \ub429\ub2c8\ub2e4. \uac01 \ub178\uc120 \ubb38\uc11c\uc5d0 \ud56d\uacf5\uc0ac\uc5d0 \ub300\ud55c \ubb38\uc11c \ud0a4 \ubc30\uc5f4\uc774 \uc788\ub2e4\uace0 \uac00\uc815\ud55c \ub2e4\uc74c \uc6d0\ub798\uc758 ON KEYS \uc808\uc744 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/span><b>\u00a0\u00a0<\/b><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">    \uc628\ud0a4\uc988 route.airlineids<\/pre>\n<p><span style=\"font-weight: 400\">\ub85c \ubcc0\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">\u00a0\u00a0\u00a0\u00a0ON \uba54\ud0c0(\ud56d\uacf5\uc0ac).id IN route.airlineids<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 16: \uc778\ub371\uc2a4 \uc870\uc778 \ub9c8\uc774\uadf8\ub808\uc774\uc158<\/span><\/h4>\n<p><span style=\"font-weight: 400\">\uc774 \uc608\uc5d0\uc11c\ub294 \uc778\ub371\uc2a4 \uc870\uc778\uc744 ANSI JOIN \uad6c\ubb38\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec \uc90d\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc778\ub371\uc2a4(\uc608 3\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airlineid ON `travel-sample`(airlineid) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4(\uc608 3\uacfc \ub3d9\uc77c):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airline_name ON `travel-sample`(name) WHERE type = \"airline\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc778\ub371\uc2a4 \uc870\uc778 \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucffc\ub9ac\ud569\ub2c8\ub2e4(ON KEY ... FOR ... \uc808\uc744 \ucc38\uace0):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT count(*)\r\nFROM `travel-sample` airline JOIN `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON KEY route.airlineid FOR airline\r\nWHERE airline.type = \"airline\" AND route.type = \"route\" AND airline.name = \"United Airlines\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc778\ub371\uc2a4 \uc870\uc778\uc5d0\uc11c \uc67c\ucabd(\"airline\")\uc758 \ubb38\uc11c \ud0a4\ub294 \uc624\ub978\ucabd(\"route\")\uc758 \ubb38\uc11c \ud0a4\uc5d0 \ud574\ub2f9\ud558\ub294 \ud45c\ud604\uc2dd(\"route.airlineid\", ON KEY \uc808\uc5d0 \ub098\ud0c0\ub0a8)\uc758 \uc778\ub371\uc2a4\ub97c \uac80\uc0c9\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4(FOR \uc808\uc5d0 \ub098\ud0c0\ub098\ub294 \"airline\"). \uc870\uc778 \uc870\uac74(\uad6c\ubb38\uc5d0\uc11c \uc554\uc2dc\ub428)\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <em>route.airlineid = \uba54\ud0c0(\ud56d\uacf5\uc0ac).id<\/em>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c ANSI JOIN \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc77c\ud55c \ucffc\ub9ac\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default mark:3 highlight:0 decode:true\">SELECT count(*)\r\nFROM `travel-sample` airline JOIN `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON route.airlineid = meta(airline).id\r\nWHERE airline.type = \"airline\" AND route.type = \"route\" AND airline.name = \"United Airlines\";<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">\uc608 17: ANSI NEST<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Couchbase N1QL\uc740 NEST \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc774\uc804\uc5d0\ub294 \uac01\uac01 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\uacfc \uc720\uc0ac\ud55c \ub8e9\uc5c5 \ub124\uc2a4\ud2b8 \ub610\ub294 \uc778\ub371\uc2a4 \ub124\uc2a4\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec NEST\ub97c \uc218\ud589\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. ANSI JOIN\uc744 \uc9c0\uc6d0\ud558\uba74 \uc720\uc0ac\ud55c \uad6c\ubb38, \uc989 ON KEYS(\uc870\ud68c \ub124\uc2a4\ud2b8) \ub610\ub294 ON KEY ... FOR ...(\uc778\ub371\uc2a4 \ub124\uc2a4\ud2b8) \uc808 \ub300\uc2e0 ON \uc808\uc744 \uc0ac\uc6a9\ud558\uc5ec NEST \uc5f0\uc0b0\uc744 \uc218\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc0c8\ub85c\uc6b4 \ubcc0\ud615\uc744 ANSI NEST\ub77c\uace0 \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ud544\uc218 \uc778\ub371\uc2a4(\uc608\uc81c 1\uacfc \ub3d9\uc77c\ud55c route_airports \uc778\ub371\uc2a4, \uc608\uc81c 4\uc640 \ub3d9\uc77c\ud55c route_airline_distance \uc778\ub371\uc2a4):<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX route_airports ON `travel-sample`(sourceairport, destinationairport) WHERE type = \"route\";\r\nCREATE INDEX route_airline_distance ON `travel-sample`(airline, distance) WHERE type = \"route\";<\/pre>\n<p><span style=\"font-weight: 400\">\uc120\ud0dd\uc801 \uc778\ub371\uc2a4:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">CREATE INDEX airline_country_iata_name ON `travel-sample`(\uad6d\uac00, iata, \uc774\ub984) WHERE type = \"\ud56d\uacf5\uc0ac\";<\/pre>\n<p><span style=\"font-weight: 400\">\ucffc\ub9ac:<\/span><\/p>\n<pre class=\"theme:xcode font-size-enable:false lang:default highlight:0 decode:true\">SELECT airline.name, ARRAY {\"destination\": r.destinationairport} FOR r in route END as destinations\r\nFROM `travel-sample` airline NEST `travel-sample` route\r\n\u00a0\u00a0\u00a0\u00a0ON airline.iata = route.airline AND route.type = \"route\" AND route.sourceairport = \"SFO\"\r\nWHERE airline.type = \"airline\" AND airline.country = \"United States\";<\/pre>\n<p><span style=\"font-weight: 400\">\ubcf4\uc2dc\ub2e4\uc2dc\ud53c ANSI NEST\uc758 \uad6c\ubb38\uc740 ANSI JOIN\uc758 \uad6c\ubb38\uacfc \ub9e4\uc6b0 \uc720\uc0ac\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc911\ucca9\uc5d0\ub294 \ud55c \uac00\uc9c0 \ud2b9\uc774\ud55c \uc18d\uc131\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc815\uc758\uc0c1 \uc911\ucca9 \uc5f0\uc0b0\uc740 \uac01 \uc67c\ucabd \ubb38\uc11c\uc5d0 \ub300\ud574 \uc77c\uce58\ud558\ub294 \ubaa8\ub4e0 \uc624\ub978\ucabd \ubb38\uc11c\uc758 \ubc30\uc5f4\uc744 \uc0dd\uc131\ud558\ubbc0\ub85c, \uc774 \ucffc\ub9ac\uc5d0\uc11c \uc624\ub978\ucabd \ud0a4 \uacf5\uac04\uc5d0 \ub300\ud55c \ucc38\uc870\uc778 \"route\"\ub294 \ucc38\uc870 \uc704\uce58\uc5d0 \ub530\ub77c \ub2e4\ub978 \uc758\ubbf8\ub97c \uac16\uc2b5\ub2c8\ub2e4. ON \uc808\uc740 NEST \uc791\uc5c5\uc758 \uc77c\ubd80\ub85c \ud3c9\uac00\ub418\ubbc0\ub85c \"route\"\uc5d0 \ub300\ud55c \ucc38\uc870\ub294 \ub2e8\uc77c \ubb38\uc11c\ub97c \ucc38\uc870\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \ubc18\uba74\uc5d0 \ud22c\uc601 \uc808 \ub610\ub294 WHERE \uc808\uc758 \ucc38\uc870\ub294 NEST \uc5f0\uc0b0 \ud6c4\uc5d0 \ud3c9\uac00\ub418\ubbc0\ub85c \"route\"\uc5d0 \ub300\ud55c \ucc38\uc870\ub294 \uc911\ucca9\ub41c \ubc30\uc5f4\uc744 \uc758\ubbf8\ud558\ubbc0\ub85c \ubc30\uc5f4\ub85c \ucde8\uae09\ud574\uc57c \ud569\ub2c8\ub2e4. \uc704 \ucffc\ub9ac\uc758 \ud22c\uc601 \uc808\uc5d0\ub294 \ubc30\uc5f4 \ub0b4\uc758 \uac01 \uac1c\ubcc4 \ubb38\uc11c\uc5d0 \uc561\uc138\uc2a4\ud558\uae30 \uc704\ud55c FOR \uc808\uc774 \uc788\ub294 ARRAY \uad6c\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4(\uc989, \"route\"\uc5d0 \ub300\ud55c \ucc38\uc870\ub294 \uc774\uc81c \ubc30\uc5f4 \ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc788\uc2b5\ub2c8\ub2e4).<\/span><\/p>\n<h2><span style=\"font-weight: 400\">\uc694\uc57d<\/span><\/h2>\n<p><span style=\"font-weight: 400\">\uc774\uc804\uc5d0 \uc9c0\uc6d0\ub418\ub358 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778(\ub458 \ub2e4 \ubb38\uc11c \ud0a4\ub85c\ub9cc \uc870\uc778\ud574\uc57c \ud568)\uc5d0 \ube44\ud574, ANSI JOIN\uc740 Couchbase N1QL\uc5d0\uc11c \ud6e8\uc52c \ub354 \uc720\uc5f0\ud558\uac8c \uc870\uc778 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc90d\ub2c8\ub2e4. \uc704\uc758 \uc608\ub294 \ucffc\ub9ac\uc5d0\uc11c ANSI JOIN\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ub2e4\uc591\ud55c \ubc29\ubc95\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. ANSI JOIN\uc740 \uad00\uacc4\ud615 \uc138\uacc4\uc5d0\uc11c \ub110\ub9ac \uc0ac\uc6a9\ub418\uae30 \ub54c\ubb38\uc5d0, Couchbase N1QL\uc5d0\uc11c ANSI JOIN\uc744 \uc9c0\uc6d0\ud558\uba74 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c Couchbase N1QL\ub85c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud6e8\uc52c \ub354 \uc27d\uac8c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Overview ANSI JOIN support is added in N1QL to Couchbase version 5.5. In previous versions of Couchbase, join support was limited to lookup join and index join, which works great when the document key from one side of the join [&hellip;]<\/p>","protected":false},"author":3021,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1812],"tags":[2182],"ppma_author":[9065],"class_list":["post-4705","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-n1ql-query","tag-devbuild"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ANSI JOIN Support in N1QL: Overview + Details | Couchbase<\/title>\n<meta name=\"description\" content=\"Find out why ANSI JOIN is more flexible than lookup join, and index join, allowing join to be done on arbitrary expressions on any fields in a document.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/ansi-join-support-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ANSI JOIN Support in N1QL\" \/>\n<meta property=\"og:description\" content=\"Find out why ANSI JOIN is more flexible than lookup join, and index join, allowing join to be done on arbitrary expressions on any fields in a document.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/ansi-join-support-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-06T00:29:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-19T14:23:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2040\" \/>\n\t<meta property=\"og:image:height\" content=\"1457\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bingjie Miao, Principal Software Engineer Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bingjie Miao, Principal Software Engineer Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/\"},\"author\":{\"name\":\"Bingjie Miao, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3a65595a167e56276aec1f708072c2e6\"},\"headline\":\"ANSI JOIN Support in N1QL\",\"datePublished\":\"2018-03-06T00:29:55+00:00\",\"dateModified\":\"2025-12-19T14:23:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/\"},\"wordCount\":3565,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"devbuild\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/\",\"name\":\"ANSI JOIN Support in N1QL: Overview + Details | Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-03-06T00:29:55+00:00\",\"dateModified\":\"2025-12-19T14:23:41+00:00\",\"description\":\"Find out why ANSI JOIN is more flexible than lookup join, and index join, allowing join to be done on arbitrary expressions on any fields in a document.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ANSI JOIN Support in N1QL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3a65595a167e56276aec1f708072c2e6\",\"name\":\"Bingjie Miao, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8834c93ec327fc373f7cf1896138b95b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d0ea9ddc7d74a893baf9227b26296cccf1eed2fc94c0c94e7fb04485b7251025?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d0ea9ddc7d74a893baf9227b26296cccf1eed2fc94c0c94e7fb04485b7251025?s=96&d=mm&r=g\",\"caption\":\"Bingjie Miao, Senior Software Engineer, Couchbase\"},\"description\":\"Bingjie Miao is a principal software engineer at Couchbase. Bingjie has 20 years of experience in relational and NoSQL databases. His main area of expertise is query optimization and query execution.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/bingjie-miaocouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ANSI JOIN Support in N1QL: Overview + Details | Couchbase","description":"\ubb38\uc11c\uc758 \ubaa8\ub4e0 \ud544\ub4dc\uc5d0 \ub300\ud574 \uc784\uc758\uc758 \ud45c\ud604\uc2dd\uc73c\ub85c \uc870\uc778\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc5b4 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\ubcf4\ub2e4 ANSI \uc870\uc778\uc774 \ub354 \uc720\uc5f0\ud55c \uc774\uc720\ub97c \uc54c\uc544\ubcf4\uc138\uc694.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/ansi-join-support-n1ql\/","og_locale":"ko_KR","og_type":"article","og_title":"ANSI JOIN Support in N1QL","og_description":"Find out why ANSI JOIN is more flexible than lookup join, and index join, allowing join to be done on arbitrary expressions on any fields in a document.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/ansi-join-support-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-03-06T00:29:55+00:00","article_modified_time":"2025-12-19T14:23:41+00:00","og_image":[{"width":2040,"height":1457,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/ANSI-JOIN-Visual-Explain-e1521063082771.png","type":"image\/png"}],"author":"Bingjie Miao, Principal Software Engineer Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bingjie Miao, Principal Software Engineer Couchbase","Est. reading time":"16\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/"},"author":{"name":"Bingjie Miao, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3a65595a167e56276aec1f708072c2e6"},"headline":"ANSI JOIN Support in N1QL","datePublished":"2018-03-06T00:29:55+00:00","dateModified":"2025-12-19T14:23:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/"},"wordCount":3565,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["devbuild"],"articleSection":["Best Practices and Tutorials","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/","name":"ANSI JOIN Support in N1QL: Overview + Details | Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-03-06T00:29:55+00:00","dateModified":"2025-12-19T14:23:41+00:00","description":"\ubb38\uc11c\uc758 \ubaa8\ub4e0 \ud544\ub4dc\uc5d0 \ub300\ud574 \uc784\uc758\uc758 \ud45c\ud604\uc2dd\uc73c\ub85c \uc870\uc778\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc5b4 \uc870\ud68c \uc870\uc778 \ubc0f \uc778\ub371\uc2a4 \uc870\uc778\ubcf4\ub2e4 ANSI \uc870\uc778\uc774 \ub354 \uc720\uc5f0\ud55c \uc774\uc720\ub97c \uc54c\uc544\ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/ansi-join-support-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ANSI JOIN Support in N1QL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3a65595a167e56276aec1f708072c2e6","name":"\ube59\uc9c0\uc5d0 \ubbf8\uc544\uc624, \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8834c93ec327fc373f7cf1896138b95b","url":"https:\/\/secure.gravatar.com\/avatar\/d0ea9ddc7d74a893baf9227b26296cccf1eed2fc94c0c94e7fb04485b7251025?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d0ea9ddc7d74a893baf9227b26296cccf1eed2fc94c0c94e7fb04485b7251025?s=96&d=mm&r=g","caption":"Bingjie Miao, Senior Software Engineer, Couchbase"},"description":"\ube59\uc9c0\uc5d0 \ubbf8\uc544\uc624\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Bingjie\ub294 \uad00\uacc4\ud615 \ubc0f NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubd84\uc57c\uc5d0\uc11c 20\ub144\uc758 \uacbd\ub825\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\uc758 \uc8fc\uc694 \uc804\ubb38 \ubd84\uc57c\ub294 \ucffc\ub9ac \ucd5c\uc801\ud654 \ubc0f \ucffc\ub9ac \uc2e4\ud589\uc785\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/bingjie-miaocouchbase-com\/"}]}},"authors":[{"term_id":9065,"user_id":3021,"is_guest":0,"slug":"bingjie-miaocouchbase-com","display_name":"Bingjie Miao, Principal Software Engineer Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d0ea9ddc7d74a893baf9227b26296cccf1eed2fc94c0c94e7fb04485b7251025?s=96&d=mm&r=g","author_category":"","last_name":"Miao, Principal Software Engineer, Couchbase","first_name":"Bingjie","job_title":"","user_url":"","description":"\ube59\uc9c0\uc5d0 \ubbf8\uc544\uc624\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Bingjie\ub294 \uad00\uacc4\ud615 \ubc0f NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubd84\uc57c\uc5d0\uc11c 20\ub144\uc758 \uacbd\ub825\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\uc758 \uc8fc\uc694 \uc804\ubb38 \ubd84\uc57c\ub294 \ucffc\ub9ac \ucd5c\uc801\ud654 \ubc0f \ucffc\ub9ac \uc2e4\ud589\uc785\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/4705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/3021"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=4705"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/4705\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=4705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=4705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=4705"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=4705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}