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?! 🙂