1. 4 Part Linked Server Syntax
Ez az, amikor simán megírunk egy queryt, mintha "nálunk" lenne a tábla, így:2. OpenQuery
Az OpenQuery név talán ismerős lehet, ez az, amikor egy string-ben 'átadjuk' a query-t, aminek az eredményét szeretnénk látni. Így néz ki:Miben különböznek?
Előszeretettel használják a legtöbben az egyszerűség és a paraméterezhetőség miatt az elsőt, hisz olyan mintha egy sima sql query-t írnánk. Akár tárolt eljárásban is használhatjuk, paraméterezhető, egyszerű a where feltétel megadása, sőt, ha így kreálunk egy view-t, abból meg még egyszerűbb lekérdezni.
Feketeleves
Amikor a "túloldalon" megszaporodnak a sorok, egyre lassabb lesz. Egészen egyszerű az oka, ugyanis az történik, hogy a túloldalról ÁTHOZ minden rekordot az adott táblából, és helyben végzi el a szűrést, ami többmilliós rekordszámnál annyira nem hatékony. Emiatt a VIEW-t sem tudjuk használni ami annyira kényelmesnek tűnik, hiszen amikor belekérdezünk a VIEW-ba, akkor is mindent áthoz, majd abból fog selectálni helyben.
A második eset NAGYON macerás, ha tárolt eljárást akarunk írni és paraméterekkel használni, de nem helyben fut le a lekérdezés. Hanem? A túloldalon, és már csak az eredményhalmaz kerül át az sql szerverhez. Szóval sokkal gyorsabb, de sajnos az OPENQUERY-nek nem lehet csak úgy paramétereket átadni.
Magyarul össze kell matyizni az sql stringet úgy, hogy paraméterektől függően legyen benne a where feltétel megírva. 1 paraméternél még annyira nem gáz, de amikor már van 4-5, és vannak dátumok is, és mindegyik lehet null is, akkor nem 2 perces feladat.Szóval, 2 ma esti mérési eredmény, SQL Express alá linkelt SQLite adatbázissal, aminek adott táblájában 4.7 millió rekord van:
1. módszer:
futási idő 405 sec
2. módszer:
futási idő 1 sec
Nem mindegy...
Nincsenek megjegyzések:
Megjegyzés küldése