მონაცემთა ბაზის მოთხოვნები ამოიღებს კონკრეტულ ინფორმაციას მონაცემთა ბაზიდან.
ქვემოთხოვნა არის შეკითხვა სხვა მოთხოვნის შიგნით. ქვემოთხოვნა ასევე შეიძლება შეიცავდეს სხვა ქვემოთხოვნას. ნათქვამია, რომ ეს არის "ბუდებული" ქვემოთხოვნები. შეერთება არის, როდესაც ორი ან მეტი ცხრილი მითითებულია მოთხოვნის "From" პუნქტში. მონაცემთა ბაზის სხვადასხვა ძრავს შეუძლია ქვემოთხოვნის ოპტიმიზაცია და სხვაგვარად შეერთება. მაგალითად, DB2-ის ოპტიმიზატორი გარდაქმნის ქვემოთხოვნას შეერთებად, თუ გარკვეული კრიტერიუმები დაკმაყოფილებულია. ზოგიერთ შემთხვევაში, შეერთება იძლევა უკეთეს შესრულებას, ვიდრე subquery.
რა ქმნის Subquery
ქვემოთხოვნა არის "SELECT" განცხადება გარე "INSERT", "UDATE", "MERGE" ან "DELETE" განცხადების "WHERE" ან "HAVING" პუნქტში. ქვემოთხოვნას ასევე უწოდებენ "შიდა შეკითხვას" ან "შიდა არჩევანს". ქვემოთხოვნას შეიძლება ჰქონდეს "FROM" პუნქტი ერთი ან მეტი ცხრილით და სურვილისამებრ შეიძლება ჰქონდეს "WHERE", "GROUP BY" ან "HAVING". ის ყოველთვის არის ჩასმული ფრჩხილებში.
დღის ვიდეო
Subqueries-ის უპირატესობები და უარყოფითი მხარეები
ქვემოთხოვნები ხელსაყრელია, რადგან ისინი აწყობენ მოთხოვნას განცხადების თითოეული ნაწილის იზოლირებისთვის, შეასრულეთ იგივე ოპერაცია, რომელიც ჩვეულებრივ მოითხოვს რთულ შეერთებებს და გაერთიანებებს და უფრო ადვილია წაიკითხეთ. ქვემოთხოვნებიც კი საფუძვლად დაედო სახელს "Structured Query Language" (SQL) მათი ადვილად წასაკითხი სტრუქტურის გამო. მინუსი არის ის, რომ თქვენ არ შეგიძლიათ შეცვალოთ ცხრილი და შეარჩიოთ იგივე ცხრილიდან ქვემოთხოვნის ფარგლებში იმავე SQL განცხადებაში. ქვემოთხოვნებს ასევე შეიძლება მეტი დრო დასჭირდეს, ვიდრე შეერთება, იმის გამო, თუ როგორ ამუშავებს მათ მონაცემთა ბაზის ოპტიმიზატორი.
რა ხდის გაწევრიანებას
ქვემოთხოვნების უმეტესობა შეიძლება გადაიწეროს შეერთების სახით, ხოლო შეერთების უმეტესობა შეიძლება გადაიწეროს როგორც ქვემოთხოვნები. შეერთება განსაზღვრავს ორ ან მეტ ცხრილს შესაბამისი სვეტით. ცხრილები ჩვეულებრივ გაერთიანებულია ძირითად და უცხო კლავიშებზე. მაგალითად, თანამშრომლის ცხრილს შეიძლება ჰქონდეს თანამშრომლის ID სვეტის ძირითადი გასაღები, ხოლო დროის ცხრილის ცხრილს ასევე აქვს თანამშრომლის id სვეტი, რომელიც არის უცხო გასაღები თანამშრომლის ცხრილისთვის. SQL შეერთება შეიძლება დაიწეროს როგორც "WHERE staff.empid = timesheet.empid" ან "FROM თანამშრომელი JOIN timesheet ON (employee.empid = timesheet.empid)."
შეერთების უპირატესობები და უარყოფითი მხარეები
შეერთების მთავარი უპირატესობა ის არის, რომ ის უფრო სწრაფად მუშაობს. შესრულების ზრდა შეიძლება არ იყოს შესამჩნევი საბოლოო მომხმარებლის მიერ. თუმცა, იმის გამო, რომ სვეტები კონკრეტულად არის დასახელებული და ინდექსირებული და ოპტიმიზირებულია მონაცემთა ბაზის ძრავის მიერ, ძიების დრო თითქმის ყოველთვის იქნება უფრო სწრაფი ვიდრე ქვემოთხოვნის. ასევე არის შიდა და გარე შეერთება, მარცხენა და მარჯვენა შეერთება, სრული შეერთება და ჯვარედინი შეერთება. შეერთების გამოყენების მინუსი არის ის, რომ მათი წაკითხვა არც ისე ადვილია, როგორც ქვემოთხოვნები. კიდევ ერთი მინუსი არის ის, რომ შეიძლება დამაბნეველი იყოს იმის თაობაზე, თუ რომელი შეერთებაა შესაბამისი ტიპის შეერთება, რომ გამოიყენოთ სწორი სასურველი შედეგის ნაკრები.