
Átmenetileg visszatértem az SQL-Developerhez, ahol az elmúlt időszakban rengeteg F10-et ütögetek. A józan paraszti ész mellett ugyanis az egyik leghasznosabb feature, ami SQL scriptek optimalizálásához használható.
A fenti képen egy business logic-ot nem tartalmazó apró kis segéd SQL statement van, egy saját kezüleg írott log táblából szedek ki regex segítségével adatokat. A lényeg azonban nem ez, hanem a lekérdezés különböző részeinek „költség” vonzata (CPU), illetve az, hogy melyik lekérdezési feltételre melyik indexet használja.
Bár arra még nem jöttem rá, hogy a két gép között miért van látványos sebesség különbség (az adatbázis cirka 1.800 táblát és view-t tartalmaz, ha valahol valaki nem vezetett át egy indexet, akkor nem két perc alatt fogom megtalálni, bár a konkrét példában csupán 4-5 tábla és view érintett), de ez legyen a holnap gondja.
Nost quick and dirty módszerrel és két index létrehozásával jelentős javulást értem el a közel másfél óráig futó „insert, update, update” parancsokat tartalamazó PL/SQL funkción, amiben a legjobb az, hogy nem kellett „try and error” módszerrel többször is lefuttatni a parancsokat, hanem az explain-plan parancsnak köszönhetően addig finomíthattam „száraz” teszteléssel, amíg elég látványos javulást nem értem el a költségek területén, valamint a lehető legjobban használta ki a létrehozott indexeket.
Ronda, nagy, jointos, lassú scripteknél csak ajánlani tudom!