Kādas ir pievienošanās vai apakšvaicājuma priekšrocības un trūkumi?

...

Datu bāzes vaicājumi izgūst konkrētu informāciju no datu bāzes.

Apakšvaicājums ir vaicājums citā vaicājumā. Apakšvaicājums var ietvert arī citu apakšvaicājumu. Tiek uzskatīts, ka tie ir "ligzdotie" apakšvaicājumi. Savienojums ir tad, kad vaicājuma klauzulā “No” ir atsauces uz divām vai vairākām tabulām. Dažādas datu bāzes programmas var optimizēt apakšvaicājumus un savienojumus atšķirīgi. Piemēram, DB2 optimizētājs pārveidos apakšvaicājumu par pievienošanos, ja tiks izpildīti noteikti kritēriji. Dažos gadījumos pievienošana nodrošina labāku veiktspēju nekā apakšvaicājums.

Kas veido apakšvaicājumu

Apakšvaicājums ir priekšraksts "SELECT" ārējā priekšraksta "INSERT", "UPDATE", "MERGE" vai "DELETE" klauzulā "WHERE" vai "HAVING". Apakšvaicājums tiek saukts arī par "iekšējo vaicājumu" vai "iekšējo atlasi". Apakšvaicājumā var būt klauzula "FROM" ar vienu vai vairākām tabulām, un pēc izvēles var būt klauzula "WHERE", "GROUP BY" vai "HAVING". Tas vienmēr ir ievietots iekavās.

Dienas video

Apakšvaicājumu priekšrocības un trūkumi

Apakšvaicājumi ir izdevīgi, jo tie strukturē vaicājumu, lai izolētu katru priekšraksta daļu, veikt to pašu darbību, kas parasti prasa sarežģītus savienojumus un savienojumus un ir vieglāk izdarāma lasīt. Apakšvaicājumi pat bija pamats nosaukumam "Structured Query Language" (SQL) to viegli lasāmās struktūras dēļ. Trūkums ir tāds, ka nevar modificēt tabulu un atlasīt no tās pašas tabulas apakšvaicājumā tajā pašā SQL priekšrakstā. Apakšvaicājumu izpilde var aizņemt ilgāku laiku nekā pievienošanās, jo datu bāzes optimizētājs tos apstrādā.

Kas liek pievienoties

Lielāko daļu apakšvaicājumu var pārrakstīt kā savienojumus, un lielāko daļu savienojumu var pārrakstīt kā apakšvaicājumus. Savienojums definē divas vai vairākas tabulas ar saistītu kolonnu. Tabulas parasti tiek savienotas ar primārajām un ārējām atslēgām. Piemēram, darbinieku tabulā var būt darbinieka ID kolonnas primārā atslēga, savukārt laika uzskaites tabulā ir arī darbinieka ID kolonna, kas ir darbinieka tabulas ārējā atslēga. SQL savienojumu var rakstīt kā "WHERE darbinieks.empid = laika kontrolsaraksts.empid" vai "FROM darbinieka JOIN laika kontrolsaraksts IESLĒGTS (darbinieks.empid = timeheet.empid)."

Savienojumu priekšrocības un trūkumi

Galvenā savienojuma priekšrocība ir tā, ka tā tiek izpildīta ātrāk. Tiešais lietotājs var nepamanīt veiktspējas pieaugumu. Tomēr, tā kā kolonnas ir īpaši nosaukušas, indeksē un optimizē datu bāzes programma, izguves laiks gandrīz vienmēr būs ātrāks nekā apakšvaicājuma laiks. Ir arī iekšējie un ārējie savienojumi, kreisie un labie savienojumi, pilnie savienojumi un šķērssavienojumi. Savienojumu izmantošanas trūkums ir tas, ka tos nav tik viegli lasīt kā apakšvaicājumus. Vēl viens trūkums ir tas, ka var radīt neskaidrības par to, kurš savienojuma veids ir piemērots, lai iegūtu pareizo vēlamo rezultātu kopu.