Turinys
Kai kurios užklausos sunaudoja daugiau išteklių nei kitos. Pavyzdžiui, užklausos, kurios pateikia didelius rezultatų rinkinius, ir tos, kuriose yra ne unikalių WHERE sąlygų, visada reikalauja daug išteklių. Joks SQL duomenų bazių intelekto laipsnis nėra geras darbas optimizuojant užklausas, taip pat negali pašalinti šių konstrukcijų išteklių kaštų, palyginti su mažiau sudėtinga užklausa.Tų pačių rezultatų galime gauti rašydami skirtingas SQL užklausas. Tačiau svarstant našumą svarbu naudoti geriausią užklausą. SQL derinimas - tai procesas, užtikrinantis, kad programos sugeneruoti SQL teiginiai būtų įvykdyti per trumpiausią įmanomą laiką. Šios SQL užklausos gali būti optimizuotos siekiant geresnio našumo.
Optimizavimo metodai arba SQL derinimas
Toliau pamatysime keletą optimizavimo metodų
1 atvejis: SQL užklausa tampa greitesnė, jei naudojate laukų pavadinimus, o ne * kaip visų lentelės laukų užklausas
PASIRINKITE * NUO klientų
Optimaliau taip rašyti užklausą
PASIRINKITE ID, vardą, adresą iš klientų
2 atvejis: Sąlyga HAVING naudojama filtruoti eilutes po to, kai visos eilutės yra pažymėtos.
PASIRINKITE dalyką, suskaičiuokite (studentų) skaičių_studentų iš užsiregistravusių KUR dalykas = 'Chemija' IR dalykas = 'Istorija' GRUPĖ PAGAL dalyką;
Optimaliau taip rašyti užklausą
SELECT medžiaga, skaičius (studentai) number_alumnos iš užregistruotos GRUPĖS pagal dalyką, turintis dalyką = 'Chemija' IR dalykas = 'istorija'
3 atvejis: Kartais pagrindinėje užklausoje galime turėti daugiau nei vieną antrinę užklausą. Šiame pavyzdyje pažiūrėkime, kaip sumažinti užklausos antrinių užklausų bloką.
Konsultuojame seniausiai ir geriausiai apmokamą darbuotoją.
SELECT vardą iš darbuotojų, KUR atlyginimas = (SELECT MAX (atlyginimas) iš darbuotojų) IR amžius = (SELECT MAX (amžius) iš darbuotojų) IR kategorija = „Elektronika“;
Optimaliau užklausą rašyti taip
SELECT vardą iš darbuotojų WHERE (atlyginimas, amžius) = (SELECT MAX (atlyginimas), MAX (amžius) iš darbuotojų) IR item = 'Electronics';
4 BYLAS: Svarbu tinkamai naudoti užklausoje EXISTS, IN operatorių ir lentelės sujungimus, nes tai operacijos, kurios sulėtina prieigą prie duomenų.
Paprastai lėčiausias „canda“ užklausos našumas.
IN yra efektyvus, kai dauguma filtro kriterijų yra antrinėje užklausoje.
„Exist“ yra efektyvus, kai dauguma filtro kriterijų yra pagrindinėje užklausoje.
Pažiūrėkime keletą pavyzdžių
Pasirinkite * iš produkto p kur product_id IN (pasirinkite product_id iš užsakymų)
Optimaliau jį parašyti taip
Pasirinkite * iš produkto, kuriame yra (pasirinkite * iš užsakymų, kuriuose užsakymai.produkto_id = produktas.produkto_id)
Naudoti egzistuoja vietoj SKIRTIS
Pavyzdys: sužinokite, kokių kategorijų knygas galima įsigyti
PASIRINKITE SKIRTINGAS kategorijas.id, kategorijas.kategorijas IŠ kategorijų, knygų KUR kategorijos.id = knygos.idkategorija;
Optimaliau užklausą rašyti taip
PASIRINKITE SKIRTINGAS kategorijas.id, kategorijas.kategorijas IŠ KATEGORIJŲ, KURIŲ (PASIRINKITE „X“ iš knygų, KUR knygos.idkategorija = category.id);
Tai yra keletas patarimų, kurie sutaupys išteklių vykdant „SQL“ užklausas ir taip pat turės programą, kuri greičiau atsakys.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką