adat b 3 elméleti Flashcards

1
Q

Kurzor

A

Rekordhalmaz és egy ezen mozgó iterátor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

kliens oldali kurzor

A

a rekordhalmazt a szerver visszaküldi a kliensnek, amely a kliens oldalon, a kliens erőforrásaival dolgozza fel azt, tipikusan végigiterál rajtuk

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

szerver oldali kurzor

A

az eredmény rekordhalmaz túl nagy, ezért a szerver oldalon iterálunk és a kliens olyan ütemben kapja meg a rekordokat a hálózaton keresztül, ahogy ténylegesen felhasználja őket. Ez folyamatos, de kis mértékű hálózati forgalmat eredményez

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

kurzorok helyes használata:

A
  • probléma jellege miatt a hagyományos procedurális megközelítéssel, rekordonkénti feldolgozással sokkal könnyebben és átláthatóbban oldható meg, mint sql dml segítségével, vagy nem is oldható meg máshogy
  • a teljesítmény a kis várható rekorszám vagy egyéb alkalmazás-specifikus körülmény miatt nem kritikus
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

NE használjunk kurzort olyan esetben,

A
  • amikor a feladat áttekinthető módon megoldható a standard halmaz-alapú SQL DML utasításokkal,
  • vagy ha a rekordhalmaz várhatóan nagy méretű
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Analitikus függvények és ablakozás

A

A rekordok egy csoportja, partíció alapján számolt értékeket csoportosítás nélkül is lekérdezhetővé teszik. A csoportosított és nem csoportosított lekérdezések lehetőségei egyszerre használhatók ki.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

kurzorok típusai:
a forrás pontossága szempontjából:
- STATIC
- KEYSET
- DYNAMIC

A
  • STATIC: a kurzor megnyitáskor a rekordhalaz tempdb adatbázis táblájaként jön létre, ezzel leválik a forrásról, és a forrás esetleges futás közbeni változásai már nem látszanak benne
  • KEYSET: a létrehozás után beszúrt rekordok nem látszanak, de a meglévő rekordok változásai igen
  • DYNAMIC: minden változás látszik
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

kurzorok típusai:
A kurzor láthatósága szempontjából:
- LOCAL
- GLOBAL

A
  • LOCAL: a kurzor csak abban a kötegben tárolt eljárásban vagy triggerben elérhető (hivatkozható), melyben létrehozták
  • GLOBAL: a kurzor az aktív kapcsolat bármelyik kötegéből, tárolt eljárásból vagy triggerből elérhető
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Lényegesebb analitikus függvények:
- FIRST_VALUE, LAST_VALUE OVER
- ROW_NUMBERS() OVER
- LAG(kifejezés, [offset], [default]) OVER …
- PERCENT_RANK() OVER …

A
  • FIRST_VALUE, LAST_VALUE OVER … a rendezett lista/partíció első/utolsó rekordjából számított kifejezés
  • ROW_NUMBERS() OVER … a rendezett lista minden rekordjához egy futú sorszámot ad
  • LAG(kifejezés, [offset], [default]) OVER … a rendezett lista aktuális rekordja előtti offset számú rekord alapján számítja a kifejezést. Jól használható idősorok elemzéséhez
  • PERCENT_RANK() OVER … a rendezett lista minden rekordjához megadja a rendezési feltétel alapján számított rangot, tehát a relatív pozíciót 0 éa 1 közötti szám formájában
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

kurzorok típusai:
a mutató mozgathatóságának szempontjából:

  • FORWARD ONLY
  • SCROLL
A

a mutató mozgathatóságának szempontjából:

  • FORWARD ONLY: csak előre mozgatható (csak a FETCH NEXT alkalmazható)
  • SCROLL: szabadon mozgatható: ekkor a FETCH FIRST, LAST, PRIOR, NEXT, RELATIVE ABSOLUTE, bármelyike alkalmazható
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

A #temp táblából az EmployeeID oszlop, az első ertek a partícióból amiben Employee-val paricionálunk és ertek szerint rendezünk, az ertek-hez tartozó OrderDate ugyan abból a partícióból

A

SELECT DISTINCT EmployeeID,
FIRST_VALUE(ertek) OVER(PARTITION BY EmployeeID ORDER BY ertek DESC) AS max_ertek,
FIRST_VALUE(OrderDate) OVER(PARTITION BY EmployeeID ORDER BY ertek DESC) max_datum,
FIRST_VALUE(ertek) OVER(PARTITION BY EmployeeID ORDER BY ertek ASC) AS min_ertek,
FIRST_VALUE(OrderDate) OVER(PARTITION BY EmployeeID ORDER BY ertek ASC) min_datum
FROM #temp;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kurzor használatának fontosabb lépései

A

DECLARE cursor_emp CURSOR FAST_FORWARD FOR
SELECT EmployeeID, LastName, Address FROM Employees ORDER BY LastName

OPEN cursor_emp;

FETCH NEXT FROM cursor_emp INTO @emp_id, @emp_name, @address;

CLOSE cursor_emp;

DEALLOCATE cursor_emp;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly