Innehållsförteckning
Vissa frågor förbrukar mer resurser än andra. Till exempel är frågor som returnerar stora resultatuppsättningar och de som innehåller WHERE -satser som inte är unika alltid resurskrävande. Ingen grad av intelligens för SQL -databaser gör ett bra jobb med att optimera frågor och kan inte heller eliminera resurskostnaden för dessa konstruktioner jämfört med en mindre komplex fråga.Vi kan få samma resultat genom att skriva olika SQL -frågor. Men att använda den bästa frågan är viktigt när man överväger prestanda. SQL Tuning är processen för att säkerställa att de SQL -satser som en applikation genererar kommer att köras på kortast möjliga tid. Dessa SQL -frågor kan optimeras för bättre prestanda.
Optimeringsteknik eller SQL Tuning
Därefter kommer vi att se några optimeringstekniker
FALL 1: SQL -frågan blir snabbare om du använder namnen på fälten än * som fråga för alla fält i tabellen
VÄLJ * FRÅN klienter
Det är mer optimalt att skriva frågan på detta sätt
VÄLJ id, namn, adress FRÅN klienter
MÅL 2: HAVING -klausulen används för att filtrera raderna efter att alla rader har valts.
VÄLJ ämne, räkna (studenter) antal_studenter FRÅN inskrivna VAR ämne = 'Kemi' OCH ämne = 'Historia' GRUPP EFTER ämne;
Det är mer optimalt att skriva frågan på detta sätt
SELECTmateria, count (students) number_alumnos FRÅN anmälda GROUP BY subject HAVING subject = 'Chemistry' AND subject = 'History'
MÅL 3: Ibland kan vi ha mer än en underfrågor i huvudfrågan. Låt oss se i följande exempel hur du minimerar undersökningsblocket i din fråga.
Vi konsulterar den äldsta och högst betalda medarbetaren.
VÄLJ namn FRÅN anställda VAR lön = (VÄLJ MAX (lön) FRÅN anställda) OCH ålder = (VÄLJ MAX (ålder) FRÅN anställda) OCH kategori = 'Elektronik';
Det är mer optimalt att skriva frågan på följande sätt
VÄLJ namn FRÅN anställda VAR (lön, ålder) = (VÄLJ MAX (lön), MAX (ålder) FRÅN anställda) OCH post = 'Elektronik';
MÅL 4: Att använda EXISTS, IN -operatören och tabellanslutningarna på lämpligt sätt i din fråga är viktigt eftersom det är transaktioner som bromsar tillgången till data.
Generellt långsammaste prestanda i canda -fråga.
IN är effektivt när de flesta filterkriterierna finns i delfrågan.
Exist är effektivt när de flesta filterkriterierna finns i huvudfrågan.
Låt oss se några exempel
Välj * från produkt p där product_id IN (välj product_id från order)
Det är mer optimalt att skriva det enligt följande
Välj * från produkt där EXISTS (välj * från order där orders.product_id = product.product_id)
Använda sig av existera istället för DISTINKT
Exempel se vilka kategorier som har böcker tillgängliga
VÄLJ DISTINKT kategorier.id, kategorier.kategorier FRÅN kategorier, böcker VAR kategorier.id = böcker.idkategori;
Det är mer optimalt att skriva frågan enligt följande
VÄLJ DISTINKT kategorier.id, kategorier.kategorier FRÅN kategorier VAR FÖRVARAR (VÄLJ 'X' FRÅN böcker VAR böcker.idkategori = kategorier.id);
Det här är några tips som sparar resurser när du kör SQL -frågor och därmed också har en applikation med snabbare svar.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng