július 2018 havi bejegyzések

Amikor SQL független logika gyorsít

Volt egy esetem, amikor egy like-ot kellett felturbózni.
Az adatok így néztek ki (1 millio sor volt a táblában és folyamatosan nőtt):

A feladat a ‘kod11=2548796654’ részletet megkeresni az ‘url’ mezőben és listázni a hozzá tartozó sorokat.

A query adott volt, ezen kéne turbózni:

SELECT * FROM tábla WHERE url like '%kod11=2548796654%'

Kezdjük a szokás kérdéssel.
Kérdés: Miért nincs egy másik tábla is, ahol kulcs-érték párokba vannak rendezve ezek az adatok?
Válasz: Anno így lett elkészítve az adatbázis és most nincs idő refaktorálni.

Mit lehet tenni ilyenkor?

Az elméleti szakember itt felteszi a kezét, hogy ennyi volt, SQL-ben ennél többet nemigazán lehet tenni.
A tapasztalt szakember pedig már a kérdés pillanatában tudta a választ, ahogy azt is, hogy beszéltetni kell a fejlesztőt, mert lehet lesz kapaszkodó.

Jelen esetben két fontos információ hangzott még el a fejlesztőtől:
1.) A kod11 (2548796654) mindig egyedi érték lesz. (Megoldás: TOP 1)
2.) Mindig a friss információkra lesznek kíváncsiak (Megoldás: ORDER BY id DESC)

Egészítsük ki a lekérdezést:

SELECT TOP 1 * 
FROM tábla 
WHERE url like '%kod11=2548796654%' 
ORDER BY id DESC

Ez a megoldás 50X-es gyorsulást hozott és tartósan, mivel mindig garantáltan a tábla végéről kell adat.
Tehát mindegy, hogy mennyi sor van a táblában, a query mindig gyors lesz.

 

Mennyit tud segíteni egy kis beszélgetés?! 🙂

Reklámok