Top 50 pitanja i odgovora na intervjuu za T-SQL (2026.)

Pitanja i odgovori za intervju za T-SQL

Pripremate se za T-SQL intervju? Vrijeme je da poboljลกate svoje razumijevanje kako baze podataka zapravo funkcioniraju ispod povrลกine. S Pitanja za intervju za T-SQLRegruti ne procjenjuju samo poznavanje sintakse, veฤ‡ i vaลกu vjeลกtinu manipuliranja podacima, optimizacije i logiฤkog strukturiranja.

Moguฤ‡nosti u ovom podruฤju nastavljaju se ลกiriti jer tvrtke ovise o uvidima temeljenim na podacima. Istiฤu se kandidati s jakim tehniฤkim znanjem, analitiฤkim vjeลกtinama i sposobnostima rjeลกavanja problema iz stvarnog svijeta - bilo da su poฤetnici ili profesionalci s 5 do 10 godina iskustva. Razumijevanje pitanja i odgovora na osnovnoj i naprednoj razini pomaลพe voditeljima timova, menadลพerima i tehniฤkim struฤnjacima da prepoznaju snaลพne SQL vjeลกtine i iskustvo na osnovnoj razini.

Naลก vodiฤ temelji se na uvidima viลกe od 65 menadลพera za zapoลกljavanje, viลกe od 40 iskusnih programera i struฤnjaka za podatke iz razliฤitih industrija, osiguravajuฤ‡i pokrivenost od osnovne SQL logike do naprednih tehnika optimizacije kojima vjeruju tehniฤki lideri diljem svijeta.
ฤŒitaj viลกeโ€ฆ

๐Ÿ‘‰ Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za T-SQL

Najฤeลกฤ‡a pitanja i odgovori za T-SQL intervju

1) ล to je T-SQL i po ฤemu se razlikuje od standardnog SQL-a?

Transact-SQL (T-SQL) je Microsoftvlasniฤko proลกirenje SQL jezika, prvenstveno koriลกteno s Microsoft SQL ServerPoboljลกava standardni SQL uvoฤ‘enjem proceduralnih programskih znaฤajki kao ลกto su varijable, uvjeti, petlje, rukovanje pogreลกkama i ugraฤ‘ene funkcije. Dok se standardni SQL fokusira na manipulaciju podacima (SELECT, INSERT, UPDATE, DELETE), T-SQL podrลพava naredbe za kontrolu toka (IF...ELSE, WHILE), rukovanje transakcijama i sistemske funkcije koje omoguฤ‡uju programerima pisanje sloลพenih skripti.

Aspekt SQL T-SQL
Svojina ANSI/ISO standard Microsoft
Proceduralna logika ograniฤen Podrลพano (varijable, petlje)
Rjeลกavanje pogreลกaka minimum TRUYโ€ฆCATCH podrลพan
Primarna upotreba Generiฤke baze podataka SQL Server

Primjer:

DECLARE @count INT = 5;
WHILE @count > 0
BEGIN
    PRINT @count;
    SET @count -= 1;
END;

2) Objasnite razliฤite vrste spajanja u T-SQL-u s primjerima.

Spojevi u T-SQL-u kombiniraju retke iz dvije ili viลกe tablica na temelju povezanih stupaca. Razumijevanje njihovih tipova kljuฤno je za relacijske upite podataka.

Vrsta pridruลพivanja Description Primjer sintakse
INNER JOIN Vraฤ‡a samo odgovarajuฤ‡e retke SELECT * FROM A INNER JOIN B ON A.id = B.id;
LEFT JOIN Sve s lijeva + podudaranja s desna SELECT * FROM A LEFT JOIN B ON A.id = B.id;
PRAVO SE PRIDRUลฝI Sve s desna + podudaranja s lijeva SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
POTPUNI PRIDRUลฝITE SE Kombinira LIJEVO + DESNO SELECT * FROM A FULL JOIN B ON A.id = B.id;
CROSS PRIDRUลฝITE se Kartezijanski produkt SELECT * FROM A CROSS JOIN B;

Praktiฤni primjer: spajanje Orders i Customers kako biste pronaลกli koji su kupci izvrลกili narudลพbe putem INNER JOIN.


3) ล to su uobiฤajeni tabliฤni izrazi (CTE) i koje su njihove prednosti?

Zajedniฤki tabliฤni izraz (CTE) pruลพa privremeni imenovani skup rezultata na koji se moลพe referencirati unutar SELECT, INSERT, UPDATE, ili DELETE izjava. Poboljลกava ฤitljivost i pojednostavljuje rekurzivne upite.

Prednosti:

  • Poboljลกava jasnoฤ‡u i odrลพavanje upita.
  • Omoguฤ‡uje rekurziju (za hijerarhijske podatke poput organizacijskih dijagrama).
  • Pomaลพe u izbjegavanju ponovljenih podupita.
  • Poveฤ‡ava modularnost u velikim skriptama.

Primjer:

WITH EmployeeCTE AS (
    SELECT EmpID, EmpName, ManagerID
    FROM Employees
)
SELECT * FROM EmployeeCTE WHERE ManagerID IS NULL;

4) Po ฤemu se privremene tablice i varijable tablice razlikuju u T-SQL-u?

Oba se koriste za pohranjivanje meฤ‘urezultata, ali njihovo ponaลกanje i opseg se znaฤajno razlikuju.

svojstvo Privremena tablica (#Temp) Varijabla tablice (@TableVar)
Pohranjeno u TempDB Memorija (s ograniฤenim koriลกtenjem TempDB-a)
Transakcijski opseg Prati transakcije Neovisno o transakcijama
Indeksi Podrลพano ograniฤen
Izvoฤ‘enje Bolje za velike skupove podataka Bolje za male skupove podataka

Primjer:

DECLARE @TableVar TABLE (ID INT, Name NVARCHAR(50));
INSERT INTO @TableVar VALUES (1, 'Alice');

Koristite privremene tablice kada radite s velikim skupovima podataka ili kada su vam potrebni indeksi.


5) Objasnite koncept transakcija u T-SQL-u i njihov ลพivotni ciklus.

Transakcija u T-SQL-u osigurava da se niz operacija izvrลกava kao jedna logiฤka jedinica. ลฝivotni ciklus ukljuฤuje ZAPOฤŒNI TRANSAKCIJU, POฤŒINITIi VRAฤ†ANJE.

Stadij Description
ZAPOฤŒNI TRANSAKCIJU Zapoฤinje transakciju
IZVRล I TRANSAKCIJU Trajno sprema sve promjene
POVRATAK TRANSAKCIJE Poniลกtava sve operacije od zadnjeg BEGIN

Primjer:

BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 100 WHERE AccID = 1;
UPDATE Accounts SET Balance = Balance + 100 WHERE AccID = 2;
COMMIT TRANSACTION;

Ako se greลกka dogodi usred procesa, ROLLBACK odrลพava integritet podataka.


6) Koja je razlika izmeฤ‘u naredbi DELETE, TRUNCATE i DROP?

naredba funkcija povrat na staro Utjeฤe na strukturu Brzina
DELETE Uklanja odreฤ‘ene retke Da Ne sporiji
SKRATITI Uklanja sve retke Ne (obiฤno) Ne pompeznost
KAP Briลกe cijelu tablicu Ne Da najbrลพe

Primjer:

DELETE FROM Employees WHERE Department = 'HR';
TRUNCATE TABLE TempData;
DROP TABLE OldLogs;

Koristiti DELETE za selektivno uklanjanje, TRUNCATE za ฤiลกฤ‡enje i DROP da se stol potpuno ukloni.


7) Kako funkcionira obrada greลกaka u T-SQL-u?

T-SQL pruลพa strukturirano rukovanje greลกkama putem TRY...CATCH blok, ลกto omoguฤ‡uje programerima elegantno upravljanje greลกkama tijekom izvoฤ‘enja.

Primjer:

BEGIN TRY
    INSERT INTO Employees VALUES (1, 'John');
END TRY
BEGIN CATCH
    PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH;

Ovaj pristup izolira neispravnu operaciju i sprjeฤava da transakcija oลกteti integritet podataka. Programeri takoฤ‘er mogu pristupiti funkcijama sustava kao ลกto su ERROR_NUMBER() or ERROR_SEVERITY() za dijagnostiku.


8) Koji su razliฤiti naฤini optimizacije performansi T-SQL upita?

Optimizacija ukljuฤuje fino podeลกavanje SQL dizajna, indeksiranja i strategija izvrลกavanja.

Kljuฤne tehnike:

  1. Koristiti pravilno indeksiranje na ฤesto upitanim stupcima.
  2. Izbjeฤ‡i SELECT * โ€” eksplicitno navedite stupce.
  3. Koristiti operacije temeljene na skupovima umjesto kursora.
  4. Analizirajte planove izvrลกenja pomoฤ‡u SQL Server Management Studio.
  5. Koristiti Uฤinkovito se PRIDRUลฝUJE uz odgovarajuฤ‡e uvjete UKLJUฤŒENO.
  6. Smanjiti ugnijeลพฤ‘eni podupiti; preferiraju CTE-ove ili privremene tablice.

Podeลกavanje performansi u T-SQL-u takoฤ‘er ukljuฤuje praฤ‡enje statistike izvrลกavanja upita pomoฤ‡u SET STATISTICS IO ON.


9) ล to su prozorske funkcije i kada ih treba koristiti?

Funkcije prozora izvode izraฤune u skupu redaka povezanih s trenutnim retkom, bez njihovog saลพimanja u jedan rezultat. Korisne su za rangiranje, tekuฤ‡e zbrojeve i pomiฤne prosjeke.

Primjer:

SELECT
    EmployeeID,
    Salary,
    RANK() OVER (ORDER BY Salary DESC) AS RankBySalary
FROM Employees;

Uobiฤajene funkcije ukljuฤuju RANK(), ROW_NUMBER(), DENSE_RANK()i SUM() OVER().

To je kljuฤno za analitiฤka optereฤ‡enja gdje su vam potrebni i agregirani i podaci na razini redaka.


10) Objasnite razliku izmeฤ‘u klasteriranih i neklasteriranih indeksa.

svojstvo Clusterizd. Kazalo Ne-Clusterizd. Kazalo
Pohranu podataka Fiziฤki preureฤ‘uje tablicu Odvojena struktura
Broj po stolu jedan viลกekratnik
Izvoฤ‘enje Brลพe za upite raspona Brลพe za odreฤ‘ene pretrage
Primjer upotrebe Glavni kljuฤ Sekundarne pretrage

Primjer:

CREATE CLUSTERED INDEX IX_EmployeeID ON Employees(EmployeeID);
CREATE NONCLUSTERED INDEX IX_Dept ON Employees(Department);

Odabir prave vrste indeksa izravno utjeฤe na brzinu izvrลกavanja upita i uฤinkovitost pohrane.


11) ล to su pohranjene procedure u T-SQL-u i zaลกto se koriste?

Pohranjena procedura je prethodno kompilirana kolekcija jedne ili viลกe SQL naredbi pohranjenih na posluลพitelju. One poboljลกavaju performanse, sigurnost i ponovnu upotrebu omoguฤ‡ujuฤ‡i vam enkapsulaciju logike i njezino ponovljeno izvrลกavanje bez ponovnog kompiliranja. Pohranjene procedure smanjuju mreลพni promet i podrลพavaju parametre za dinamiฤko izvrลกavanje.

Primjer:

CREATE PROCEDURE GetEmployeeDetails @Dept NVARCHAR(50)
AS
BEGIN
    SELECT EmpName, Position FROM Employees WHERE Department = @Dept;
END;

Prednosti:

  • Bolje performanse zbog predkompilacije.
  • Poboljลกana sigurnost kroz kontrolirano izvrลกavanje.
  • Lakลกe odrลพavanje koda i modularizacija.

12) Objasnite razliku izmeฤ‘u pohranjene procedure i funkcije u T-SQL-u.

Aspekt Pohranjeni postupak funkcija
Tip povrata Moลพe vratiti viลกe vrijednosti Mora vratiti jednu vrijednost ili tablicu
Koristi u SELECT-u Nije dozvoljeno dopuลกteno
Rjeลกavanje pogreลกaka TRUYโ€ฆCATCH podrลพan ograniฤen
Izvrลกenje Izvrลกeno putem EXEC Koristi se u liniji sa SQL-om
Kontrola transakcija Podrลพano Nije podrลพano

Primjer:

  • Postupak: EXEC GetEmployeeDetails 'HR';
  • Funkcija: SELECT dbo.GetSalary(101);

Funkcije su idealne za izraฤune; procedure su bolje za poslovnu logiku i manipulaciju podacima.


13) ล to je okidaฤ u T-SQL-u i koje su njegove vrste?

Okidaฤ je posebna pohranjena procedura koja se automatski izvrลกava kao odgovor na odreฤ‘ene dogaฤ‘aje (INSERT, UPDATE, DELETE) na tablici ili prikazu. Okidaฤi se koriste za provoฤ‘enje poslovnih pravila, reviziju promjena ili odrลพavanje referencijalnog integriteta.

Tip Description
NAKON okidaฤa Pokreฤ‡e se nakon zavrลกetka dogaฤ‘aja
UMJESTO Okidaฤ Izvrลกava se umjesto okidaฤkog dogaฤ‘aja

Primjer:

CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    PRINT 'New employee record added!';
END;

Izbjegavajte prekomjernu upotrebu okidaฤa - oni mogu utjecati na performanse i zakomplicirati otklanjanje pogreลกaka.


14) Kako se u T-SQL-u obraฤ‘uju NULL vrijednosti?

NULL predstavlja nedostajuฤ‡e ili nepoznate podatke. T-SQL nudi nekoliko funkcija za uฤinkovitu obradu:

  • ISNULL(expression, replacement) โ†’ zamjenjuje NULL s zadanom vrijednoลกฤ‡u.
  • COALESCE(expression1, expression2, ...) โ†’ vraฤ‡a prvu vrijednost koja nije NULL.
  • NULLIF(expression1, expression2) โ†’ vraฤ‡a NULL ako su izrazi jednaki.

Primjer:

SELECT ISNULL(Manager, 'No Manager') AS ManagerName FROM Employees;

Najbolja praksa: Uvijek uzmite u obzir NULL vrijednosti u spajanjima i uvjetima kako biste izbjegli neoฤekivane rezultate.


15) ล to su kursori u T-SQL-u i kada ih treba izbjegavati?

Kursor omoguฤ‡uje obradu rezultata upita redak po redak - korisno za sloลพenu logiku gdje operacije temeljene na skupovima nisu dovoljne. Meฤ‘utim, kursori su sporo i resursima teลพak u usporedbi s alternativama temeljenim na skupovima.

Primjer:

DECLARE emp_cursor CURSOR FOR SELECT EmpName FROM Employees;
OPEN emp_cursor;
FETCH NEXT FROM emp_cursor;
-- process
CLOSE emp_cursor;
DEALLOCATE emp_cursor;

Nedostaci:

  • Poveฤ‡ana upotreba memorije.
  • Slaba skalabilnost.
  • Smanjene performanse.

Alternativa: Koristite spajanje tablica, podupite ili prozorske funkcije kad god je to moguฤ‡e.


16) Objasnite naredbu MERGE i njezine sluฤajeve upotrebe.

The MERGE izjava izvodi INSERT, UPDATEi DELETE operacije u jednoj naredbi - idealno za sinkronizaciju dvije tablice.

Primjer sintakse:

MERGE INTO Target AS T
USING Source AS S
ON T.ID = S.ID
WHEN MATCHED THEN UPDATE SET T.Name = S.Name
WHEN NOT MATCHED BY TARGET THEN INSERT (ID, Name) VALUES (S.ID, S.Name)
WHEN NOT MATCHED BY SOURCE THEN DELETE;

Upotrijebite sluฤajeve:

  • Skladiลกtenje podataka (sinkronizacija pripravnih i ciljnih tablica).
  • Inkrementalno uฤitavanje podataka.
  • Odrลพavanje revizijskih ili dimenzijskih tablica.

17) Koje su razliฤite vrste korisniฤki definiranih funkcija (UDF-ova) u T-SQL-u?

Tip Description Primjer
skalar Vraฤ‡a jednu vrijednost CREATE FUNCTION GetTax(@Salary DECIMAL) RETURNS DECIMAL
Ugraฤ‘eno tabliฤno vrednovanje Vraฤ‡a tablicu putem single-a SELECT RETURN SELECT * FROM Employees WHERE Dept = 'HR'
Viลกestruki iskaz s tabliฤnim vrijednostima Vraฤ‡a tablicu nakon viลกe naredbi Korisno za sloลพenu logiku

Funkcije potiฤu ponovnu upotrebu koda i poboljลกavaju modularni dizajn upita.

Trebali bi biti deterministiฤki (vratiti isti rezultat za isti ulaz) kad god je to moguฤ‡e radi optimizacije performansi.


18) ล to je normalizacija i koje su njezine prednosti i nedostaci?

Normalizacija je proces organiziranja podataka u bazi podataka kako bi se minimizirala redundancija i poboljลกao integritet. Ukljuฤuje dijeljenje tablica na manje, povezane entitete.

Normalna forma Pravilo Primjer
1NF Uklonite ponavljajuฤ‡e grupe Razdvajanje podataka odvojenih zarezima
2NF Uklonite djelomiฤne ovisnosti Osigurati potpunu ovisnost o primarnom kljuฤu
3NF Uklonite tranzitivne ovisnosti Premjeลกtanje izvedenih atributa

Prednosti:

  • Smanjuje redundanciju.
  • Osigurava konzistentnost podataka.
  • Pojednostavljuje odrลพavanje.

Nedostaci:

  • Sloลพeni spojevi.
  • Potencijalni kompromisi u performansama za analitiฤke upite.

19) Koje su razliฤite vrste ograniฤenja u T-SQL-u?

Ograniฤenja nameฤ‡u pravila o integritetu podataka unutar tablice.

Ograniฤenje Svrha Primjer
OSNOVNI KLJUฤŒ Jedinstveno identificira svaki red PRIMARY KEY (EmpID)
STRANI KLJUC Povezuje dvije tablice FOREIGN KEY (DeptID)
JEDINSTVENA Osigurava jedinstvene vrijednosti stupaca UNIQUE (Email)
PROVJERITI Provjerava raspon podataka CHECK (Age >= 18)
DEFAULT Pruลพa zadane vrijednosti DEFAULT GETDATE()

Ograniฤenja osiguravaju toฤnost i pouzdanost, smanjujuฤ‡i potrebu za opseลพnom validacijom na razini aplikacije.


20) Kako upravljate dozvolama i sigurnoลกฤ‡u u T-SQL-u?

T-SQL upravlja sigurnoลกฤ‡u baze podataka putem prijave, korisnici, uloge i dopuลกtenja.

Dozvole se mogu dodijeliti ili opozvati na razini objekta ili sheme.

Primjer:

CREATE LOGIN John WITH PASSWORD = 'Strong@123';
CREATE USER John FOR LOGIN John;
GRANT SELECT, INSERT ON Employees TO John;

Najbolje prakse:

  • Koristiti uloge umjesto izravnih korisniฤkih dozvola.
  • Izbjegavajte upotrebu sa ili sistemske raฤune za aplikacije.
  • Redovito provjeravajte dopuลกtenja s sys.database_permissions.

Pravilno upravljanje dozvolama osigurava naฤelo najmanjih privilegija i usklaฤ‘enost sa sigurnosnim politikama.


21) Koje su razliฤite razine izolacije transakcija u T-SQL-u?

Razine izolacije transakcija odreฤ‘uju kako je jedna transakcija izolirana od drugih โ€“ balansiranje dosljednost sa konkurentnostSQL Server podrลพava sljedeฤ‡e:

Razina izolacije Description Prljavo ลกtivo Neponovljivo ฤitanje Fantomsko ฤitanje
ฤŒITAJ NEOBVEZENO ฤŒita nepotvrฤ‘ene podatke Da Da Da
PROฤŒITANO POTVRฤENO Zadano; brave sprjeฤavaju prljavo ฤitanje Ne Da Da
PONOVLJIVO ฤŒITANJE Sprjeฤava promjenu podataka do potvrde (commit) Ne Ne Da
SERIJALIZABILNO Potpuna izolacija; najviลกa razina zakljuฤavanja Ne Ne Ne
SNIMAK Koristi verzioniranje, ne zakljuฤavanje Ne Ne Ne

Primjer:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
-- your code
COMMIT;

Koristiti SNIMAK za sustave s visokom konkurentnoลกฤ‡u kako bi se minimiziralo blokiranje bez ลพrtvovanja konzistentnosti.


22) ล to je zastoj u SQL Serveru i kako ga sprijeฤiti?

A zastoj dogaฤ‘a se kada dvije transakcije drลพe brave koje jedna drugoj trebaju, ลกto rezultira zastojem. SQL Server automatski otkriva i prekida jednu transakciju kao ลพrtvu zastoja.

Primjer scenarija:

  • Transakcija A zakljuฤava Tablicu1, a zatim ฤeka Tablicu2.
  • Transakcija B zakljuฤava Tablicu2, a zatim ฤeka Tablicu1.

Tehnike prevencije:

  1. Pristupite resursima istim redoslijedom.
  2. Neka transakcije budu kratke.
  3. Koristite odgovarajuฤ‡e razine izolacije.
  4. Izbjegavajte interakciju korisnika unutar transakcija.

Koristite SQL Profiler ili proลกirene dogaฤ‘aje za traczastoji u stvarnom vremenu.


23) Objasnite razliku izmeฤ‘u pesimistiฤne i optimistiฤne kontrole konkurentnosti.

Tip Description Mehanizam za zakljuฤavanje Koristite sluฤaj
Pesimistiฤan Zakljuฤava podatke tijekom transakcije Teลกko zakljuฤavanje Okruลพenja s visokim stupnjem konflikta
Optimistiฤki Koristi verzioniranje redaka, provjerava prije potvrde Minimalno zakljuฤavanje Radna optereฤ‡enja s puno ฤitanja i malom koliฤinom sukoba

Primjer:

  • Pesimistiฤno: Zadano READ COMMITTED zakljuฤavanje.
  • Optimistiฤan: SNAPSHOT izolacija s verzijama redaka.

Optimistiฤna konkurentnost poboljลกava performanse sustava s velikim brojem operacija ฤitanja i rijetkim aลพuriranjima.


24) Kako moลพete analizirati i optimizirati sporo izvrลกavajuฤ‡i T-SQL upit?

  1. Provjerite plan izvrลกenja: Identificirajte skeniranja, nedostajuฤ‡e indekse i skupe operacije.
  2. Koristite SET STATISTICS IO/TIME: Analizirajte koriลกtenje I/O i CPU-a.
  3. Izbjegavajte kursore i petlje: Zamijenite operacijama temeljenim na skupovima.
  4. Optimizacija indeksa: Dodajte ili reorganizirajte fragmentirane indekse.
  5. Njuลกkanje parametara: Koristiti OPTION (RECOMPILE) za stvaranje novih planova.

Primjer:

SET STATISTICS TIME ON;
SELECT * FROM Orders WHERE CustomerID = 123;

Redovito praฤ‡enje sporih upita pomoฤ‡u Dinamiฤki upravljaฤki prikazi (DMV) poput sys.dm_exec_query_stats je najbolja praksa.


25) ล to je dinamiฤki SQL i koje su njegove prednosti i rizici?

Dinamiฤki SQL vam omoguฤ‡uje dinamiฤko konstruiranje SQL naredbi tijekom izvoฤ‘enja pomoฤ‡u varijabli.

Primjer:

DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT * FROM Employees WHERE Dept = ''' + @Dept + '''';
EXEC(@sql);

Prednosti:

  • Fleksibilnost za nazive varijabilnih tablica ili filtere.
  • Ponovno upotrebljivo za viลกe shema.

Nedostaci:

  • Osjetljiv na SQL Injection ako nije parametrizirano.
  • Teลพe je otklanjati greลกke i odrลพavati.

Uvijek koristite sp_executesql s parametrima za sigurnost.


26) ล to su privremeni objekti u T-SQL-u i po ฤemu se razlikuju?

Privremeni objekti se pohranjuju u TempDB i pomoฤ‡i u upravljanju meฤ‘upodacima.

Vrsta objekta Djelokrug Primjer
Lokalna privremena tablica Specifiฤno za sesiju CREATE TABLE #TempTable
Globalna tablica temperatura Vidljivo svim sesijama CREATE TABLE ##TempGlobal
Varijabla tablice Specifiฤno za seriju DECLARE @Temp TABLE (...)

Najbolje prakse:

  • Za manje skupove podataka preferirajte varijable tablice.
  • Za veฤ‡e podatke s potrebama indeksiranja koristite lokalne privremene tablice.
  • Izriฤito uklonite privremene tablice kako biste brลพe oslobodili resurse.

27) Kako se koriste funkcije particioniranja prozora u T-SQL-u?

Particioniranje omoguฤ‡uje primjenu prozorskih funkcija na specifiฤne podskupove podataka.

Primjer:

SELECT
    Department,
    EmpName,
    Salary,
    RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS RankInDept
FROM Employees;

Prednosti:

  • Uฤinkovito izraฤunava rangiranje, ukupne rezultate i prosjeke po grupi.
  • Uklanja potrebu za samospajanjima ili podupitima.

Upotrijebite sluฤajeve: Platni razredi, rangiranje prodaje i analiza trendova.


28) Koja je razlika izmeฤ‘u UNION i UNION ALL u T-SQL-u?

Klauzula Duplikati Izvoฤ‘enje Koristite sluฤaj
UNIJA Uklanja duplikate Sporije (koristi sortiranje/razlikovanje) ฤŒisto kombiniranje skupova rezultata
SAVEZ SVE ฤŒuva duplikate Brลพe Agregacija ili migracija podataka

Primjer:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers;

preferiraju UNION ALL kada su duplikati prihvatljivi i kada je izvedba vaลพna.


29) Kako se radi s JSON podacima u T-SQL-u?

SQL Server podrลพava izvorne JSON funkcije za parsiranje i generiranje JSON podataka.

Primjer:

DECLARE @json NVARCHAR(MAX) = '{"Name":"John","Age":30}';
SELECT JSON_VALUE(@json, '$.Name') AS Name;

Kljuฤne funkcije:

  • JSON_VALUE() โ†’ Bivลกitracts skalarne vrijednosti.
  • JSON_QUERY() โ†’ Bivลกitracts objekti/nizovi.
  • OPENJSON() โ†’ Raลกฤlanjuje JSON u retke.
  • FOR JSON โ†’ Pretvara rezultate upita u JSON format.

Korisno za API-je, hibridne sustave i NoSQL integracije.


30) Kako moลพete upravljati i optimizirati TempDB u SQL Serveru?

TempDB je sistemska baza podataka kljuฤna za privremenu pohranu i verzioniranje. Loลกe upravljanje moลพe uzrokovati ozbiljne probleme s performansama.

Tehnike optimizacije:

  1. Postavite TempDB na brzu pohranu (SSD).
  2. Prethodno odredi veliฤinu podataka i datoteka zapisnika.
  3. Koristite viลกe podatkovnih datoteka (1 po jezgri procesora, do 8).
  4. Monitor s sys.dm_db_file_space_usage.
  5. Redovito ฤistite privremene predmete.

Primjer upita:

SELECT * FROM sys.dm_db_file_space_usage;

Proaktivno upravljanje TempDB-om izbjegava sukob na stranicama za alokaciju i poboljลกava ukupnu propusnost baze podataka.


31) ล to su nagovjeลกtaji upita u T-SQL-u i kada ih treba koristiti?

Savjeti za upite upuฤ‡uju optimizator SQL Servera da promijeni svoj uobiฤajeni plan izvrลกavanja.

Treba ih koristiti ลกtedljivo - samo kada u potpunosti razumijete kontekst distribucije i izvrลกavanja podataka.

Primjer:

SELECT * FROM Orders WITH (NOLOCK) WHERE CustomerID = 102;

Uobiฤajeni savjeti:

  • NOLOCK: ฤŒita bez zakljuฤavanja (moลพe ฤitati nepotvrฤ‘ene podatke).
  • FORCESEEK: Prisiljava indeksno traลพenje umjesto skeniranja.
  • OPTIMIZE FOR: Vodi vrijednosti parametara za generiranje plana.
  • RECOMPILE: Prisiljava ponovnu kompilaciju za svako izvrลกavanje.

Oprez: Prekomjerna upotreba savjeta moลพe smanjiti performanse kako podaci rastu ili se obrasci mijenjaju. Koristite ih samo kada je plan optimizatora dokazivo neuฤinkovit.


32) Objasnite koncept keลกiranja plana izvrลกenja u SQL Serveru.

SQL Server pohranjuje planove izvrลกavanja u predmemoriju kako bi se izbjeglo ponovno kompiliranje za ponavljajuฤ‡e upite.

Kada se isti upit ponovno izvrลกi s identiฤnom strukturom, ponovno koristi predmemorirani plan, poboljลกavajuฤ‡i performanse.

Primjer:

EXEC GetCustomerOrders @CustomerID = 101;

Prednosti:

  • Smanjuje optereฤ‡enje CPU-a.
  • Poboljลกava dosljednost u vremenu odziva.

Problemi:

  • Njuลกkanje parametara moลพe uzrokovati neuฤinkovite planove.
  • Preoptereฤ‡enje predmemorije plana moลพe troลกiti memoriju.

Smanjenje: Koristiti OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN gdje parametri znatno variraju.


33) ล to je njuลกkanje parametara i kako moลพe utjecati na performanse?

Njuลกkanje parametara dogaฤ‘a se kada SQL Server koristi vrijednosti parametara iz prvog izvrลกavanja upita za generiranje plana koji se zatim ponovno koristi - ฤak i ako je neoptimalan za kasnija izvrลกavanja.

Primjer scenarija:

  • Prvo izvrลกenje: mali skup podataka โ†’ plan pretraลพivanja indeksa.
  • Sljedeฤ‡e izvrลกenje: veliki skup podataka โ†’ isti plan ponovno koriลกten, ali sporo.

Rjeลกenja:

  1. Koristiti OPTION (RECOMPILE) za stvaranje novih planova.
  2. Koristite lokalne varijable za maskiranje vrijednosti parametara.
  3. Koristiti OPTIMIZE FOR or OPTIMIZE FOR UNKNOWN.

Njuลกkanje parametara jedan je od glavnih krivaca za nepredvidive performanse u T-SQL-u.


34) Kako pratite i analizirate performanse upita u SQL Serveru?

Za profiliranje i podeลกavanje performansi moลพete koristiti nekoliko alata i DMV-ova:

  • Izvrลกni planovi: Ctrl + M u SSMS-u ili sys.dm_exec_query_plan.
  • DMV-ovi:

    • sys.dm_exec_query_stats โ€“ CPU i trajanje.
    • sys.dm_exec_sql_text โ€“ SQL tekst.
    • sys.dm_exec_requests โ€“ Aktivni upiti.
  • Monitor performansi i proลกireni dogaฤ‘aji za dugoroฤno trackralj.

Primjer:

SELECT TOP 5
    total_worker_time / execution_count AS AvgCPU,
    total_elapsed_time / execution_count AS AvgTime,
    SUBSTRING(qt.text, 1, 100) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgTime DESC;

35) Objasnite ulogu statistike u optimizaciji upita.

Statistika opisuje distribuciju podataka (npr. razliฤite vrijednosti, gustoฤ‡u, histogram) koju optimizator koristi za procjenu kardinalnosti.

Ako su statistike zastarjele, SQL Server moลพe odabrati loลกe planove.

Kljuฤne naredbe:

  • UPDATE STATISTICS Employees;
  • sp_updatestats;
  • Postavka automatskog aลพuriranja: omoguฤ‡eno prema zadanim postavkama.

Najbolje prakse:

  • Zadrลพati AUTO_UPDATE_STATISTICS omoguฤ‡en.
  • Za velike tablice zakaลพite ruฤna aลพuriranja.
  • Koristiti FULLSCAN za kritiฤne indekse.

Zastarjela statistika je tihi ubojica performansi.


36) Koja je razlika izmeฤ‘u pretraลพivanja indeksa i skeniranja indeksa?

OperaANJE Description Izvoฤ‘enje Koristite sluฤaj
Traลพenje indeksa Izravno navigira do odgovarajuฤ‡ih redaka pompeznost Visoko selektivni upiti
Indeksno skeniranje Sekvencijalno ฤita sve unose indeksa sporiji Upiti niske selektivnosti

Primjer:

SELECT * FROM Orders WHERE OrderID = 123; -- Seek
SELECT * FROM Orders WHERE Status = 'Active'; -- May Scan

Savjet za optimizaciju: Stvorite filtrirane ili pokrivajuฤ‡e indekse kako biste skeniranja pretvorili u pretraลพivanja.


37) Objasnite particionirane tablice i njihove prednosti.

Particioniranje dijeli veliku tablicu na manje, upravljive dijelove (particije), ฤesto na temelju raspona stupca (poput datuma).

Prednosti:

  • Brลพe upravljanje podacima (uฤitavanje/istovar po particiji).
  • Poboljลกane performanse upita na velikim skupovima podataka.
  • Paralelna obrada za particionirane skaniranja.

Primjer:

CREATE PARTITION FUNCTION pfRange (DATETIME)
AS RANGE LEFT FOR VALUES ('2022-12-31', '2023-12-31');

Sluฤaj upotrebe: Skladiลกta podataka koja obraฤ‘uju milijarde redaka gdje se stare particije mogu uฤinkovito arhivirati.


38) ล to su rekurzivne CTE i koja ograniฤenja imaju?

A rekurzivni izraz zajedniฤke tablice (CTE) referencira samog sebe, obiฤno za hijerarhijske podatke poput organizacijskih dijagrama ili struktura stabala.

Primjer:

WITH EmployeeCTE AS (
    SELECT EmpID, ManagerID, EmpName FROM Employees WHERE ManagerID IS NULL
    UNION ALL
    SELECT e.EmpID, e.ManagerID, e.EmpName
    FROM Employees e
    INNER JOIN EmployeeCTE c ON e.ManagerID = c.EmpID
)
SELECT * FROM EmployeeCTE;

Ograniฤenja:

  • Zadano ograniฤenje rekurzije = 100 razine.
  • Moลพe uzrokovati probleme s performansama ako je dubina rekurzije velika.
  • Koristiti OPTION (MAXRECURSION n) za podeลกavanje ograniฤenja.

39) Kako SQL Server interno obraฤ‘uje pogreลกke u transakcijama?

Kada se unutar transakcije dogodi greลกka:

  • Ako jest teลกka (razina > 20), veza se odmah prekida.
  • If neozbiljan, moลพe se uhvatiti s TRY...CATCH.

Primjer:

BEGIN TRY
    BEGIN TRANSACTION;
    UPDATE Accounts SET Balance -= 500 WHERE ID = 1;
    INSERT INTO AuditLog VALUES ('Debit');
    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;
    PRINT ERROR_MESSAGE();
END CATCH;

Najbolja vjeลพba: Uvijek omotajte DML u TRYโ€ฆCATCH radi otpornosti na pogreลกke.


40) Koje su neke napredne tehnike podeลกavanja performansi T-SQL-a?

  1. Izbjegavajte skalarne UDF-ove u SELECT-u โ€” inline funkcije su brลพe.
  2. Koristite filtrirane indekse kako bi se smanjila veliฤina indeksa.
  3. Iskoristite OLTP u memoriji (Hekaton) za sustave s visokom konkurentnoลกฤ‡u.
  4. Izvrลกavanje u paketnom naฤinu rada na indeksima columnstorea za analitiku.
  5. Uklonite implicitne konverzije usklaฤ‘ivanjem tipova podataka.
  6. Koristi pohranu upita usporediti povijesne planove.

Primjer za otkrivanje implicitnih konverzija:

SELECT * FROM sys.dm_exec_query_stats CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE CAST(query_plan AS NVARCHAR(MAX)) LIKE '%CONVERT_IMPLICIT%';

Podeลกavanje performansi je kontinuirani proces - ne jednokratni dogaฤ‘aj.


41) Kako biste identificirali upite koji u SQL Serveru koriste najviลกe resursa?

Skupe upite moลพete prepoznati pomoฤ‡u dinamiฤkih upravljaฤkih prikaza (DMV) koji biljeลพe povijesne statistike izvrลกavanja.

Primjer:

SELECT TOP 10
    total_logical_reads / execution_count AS AvgReads,
    total_worker_time / execution_count AS AvgCPU,
    total_elapsed_time / execution_count AS AvgDuration,
    SUBSTRING(qt.text, 1, 200) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgCPU DESC;

Kljuฤni pokazatelji:

  • AvgCPUProsjeฤno vrijeme procesora po izvrลกavanju.
  • AvgReadsIntenzitet ulazno/izlaznih operacija.
  • AvgDurationLatencija izvrลกenja.

Ovaj pristup pomaลพe administratorima baza podataka da izoliraju teลกke upite prije nego ลกto korisnici uopฤ‡e primijete smanjenje performansi.


42) Kako moลพete otkriti i ispraviti nedostajuฤ‡e indekse u SQL Serveru?

SQL Server automatski tracks nedostaju preporuke indeksa putem DMV-ova.

Primjer:

SELECT
    migs.user_seeks AS Seeks,
    mid.statement AS TableName,
    mid.equality_columns,
    mid.inequality_columns,
    mid.included_columns
FROM sys.dm_db_missing_index_details mid
JOIN sys.dm_db_missing_index_groups mig ON mid.index_handle = mig.index_handle
JOIN sys.dm_db_missing_index_group_stats migs ON mig.index_group_handle = migs.group_handle
ORDER BY migs.user_seeks DESC;

Najbolje prakse:

  • Prvo dajte prioritet indeksima s visokim pretraลพivanjem.
  • Provjerite putem planova izvrลกenja prije izrade.
  • Izbjegavajte prekomjerno indeksiranje - ono usporava pisanje.

43) Koja je razlika izmeฤ‘u zrcaljenja baze podataka, replikacije i slanja dnevnika?ping?

svojstvo Svrha U stvarnom vremenu Failover Sloลพenost
Zrcaljenje Kopija baze podataka visoke dostupnosti Da Automatski Srednji
odgovor Distribucija podataka meฤ‘u bazama podataka Djelomiฤna Priruฤnik visok
Brod za prijevoz trupacaping Strategija DR temeljena na sigurnosnim kopijama Ne Priruฤnik Nizak

Upute za koriลกtenje:

  • Zrcaljenje โ†’ OLTP sustavi visoke dostupnosti.
  • Replikacija โ†’ Distribuirano izvjeลกtavanje.
  • Brod za prijevoz trupacaping โ†’ Postavke oporavka od katastrofe.

44) Kako rjeลกavate probleme s blokiranjem u SQL Serveru?

Do blokiranja dolazi kada jedan proces drลพi brave koje su potrebne drugom procesu.

Za identifikaciju blokatora:

SELECT
    blocking_session_id AS Blocker,
    session_id AS Blocked,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;

Rjeลกenja:

  • Smanjite duljinu transakcije.
  • Koristite izolaciju snimke stanja.
  • Podesite upite kako biste smanjili zakljuฤavanje.
  • Identificirajte dugotrajne otvorene transakcije pomoฤ‡u DBCC OPENTRAN.

45) Kako SQL Serverov Query Store pomaลพe u optimizaciji performansi?

Query Store biljeลพi tekst upita, planove i statistiku izvoฤ‘enja โ€” ลกto omoguฤ‡uje analiza regresije plana.

Pomaลพe u prepoznavanju kada upit iznenada postane spor zbog promjena plana.

Primjer:

SELECT q.query_id, p.plan_id, rs.avg_duration
FROM sys.query_store_query q
JOIN sys.query_store_plan p ON q.query_id = p.query_id
JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id
ORDER BY rs.avg_duration DESC;

Prednosti:

  • Usporedite povijesne planove.
  • Forsirajte dobre planove.
  • Track trendovi performansi tijekom vremena.

46) Kako moลพete sprijeฤiti SQL injekciju u T-SQL aplikacijama?

Primarne obrane:

  1. Koristiti parametrizirani upiti preko sp_executesql.
  2. Validirajte i dezinficirajte sve korisniฤke unose.
  3. Izbjegavajte dinamiฤko SQL spajanje kodova.
  4. Zaposliti naฤelo najmanjih privilegija za raฤune baze podataka.

Siguran primjer:

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT * FROM Employees WHERE Dept = @Dept';
EXEC sp_executesql @sql, N'@Dept NVARCHAR(50)', @Dept = 'HR';

Iako je SQL injekcija na razini aplikacije, DBA-ovi moraju revidirati pohranjene procedure i logove za neparametrizirano izvrลกavanje.


47) Kako koristite proลกirene dogaฤ‘aje za dubinsko praฤ‡enje performansi?

Proลกireni dogaฤ‘aji (XEvents) su lagani okvir za praฤ‡enje performansi - moderna alternativa SQL-u. Trace.

Primjer:

CREATE EVENT SESSION TrackQueries
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(WHERE duration > 1000)
ADD TARGET package0.event_file (SET filename = 'C:\Temp\QueryMonitor.xel');
ALTER EVENT SESSION TrackQueries ON SERVER STATE = START;

Upotrijebite sluฤajeve:

  • Pratite upite s visokim optereฤ‡enjem procesora.
  • Zabiljeลพite zastoje ili nedostajuฤ‡e indekse.
  • Profilirajte dugotrajne naredbe u produkciji s minimalnim reลพijskim troลกkovima.

48) ล to su filtrirani indeksi i kada ih treba koristiti?

Filtrirani indeks indeksira samo podskup redaka koji zadovoljavaju uvjet filtra - poboljลกavajuฤ‡i performanse i smanjujuฤ‡i prostor za pohranu.

Primjer:

CREATE INDEX IX_ActiveEmployees
ON Employees (Department)
WHERE Status = 'Active';

Prednosti:

  • Manja veliฤina indeksa.
  • Brลพe odrลพavanje.
  • Optimizirano za selektivne upite.

Najbolje za: Stupci s iskrivljenom distribucijom podataka (npr. aktivni vs. neaktivni zapisi).


49) Kako sigurno migrirati podatke izmeฤ‘u SQL Server okruลพenja?

Sigurna migracija podataka ukljuฤuje planiranje za dosljednost, vrijeme zastoja i vraฤ‡anje na prethodno stanje.

Najbolje prakse:

  1. Koristiti transakcijska replikacija or prikupljanje podataka o promjenama (CDC) za sinkronizaciju uลพivo.
  2. Privremeno onemoguฤ‡ite ograniฤenja i okidaฤe.
  3. Koristiti BCP or SSIS za prijenos velikih koliฤina podataka.
  4. Provjerite broj redaka i kontrolne zbrojeve.
  5. Uvijek pokreni provjere integriteta nakon migracije (DBCC CHECKDB).

Primjer:

bcp Database.dbo.Table out TableData.dat -n -S Server -T

Testiranje migracijskih skripti u fazi testiranja nije predmet pregovora.


50) Kako identificirate i ispravljate probleme s upitima osjetljivim na parametre (PSQ)?

Upiti osjetljivi na parametre izvode se nedosljedno na temelju vrijednosti parametara - ลกto je ฤest izazov u stvarnom svijetu.

Otkrivanje: Koristiti Trgovina upita or sys.dm_exec_query_stats identificirati viลกe planova za jedan upit.

Strategije ispravljanja:

  1. Koristiti OPCIJA (REKOMPAJLIRAJ) za svako izvrลกenje.
  2. Koristiti OPTIMIZIRAJ ZA NEPOZNATO za izradu generiฤkog plana.
  3. stvoriti vodiฤi za planove kako bi se osigurali optimalni putevi izvrลกenja.
  4. Koristiti savjeti za upite samo ako je potrebno.

Problemi osjetljivi na parametre zahtijevaju ravnoteลพu izmeฤ‘u stabilnosti plana i predvidljivosti performansi.

๐Ÿ” Najฤeลกฤ‡a pitanja za T-SQL intervju sa stvarnim scenarijima i strateลกkim odgovorima

1) Koja je razlika izmeฤ‘u INNER JOIN-a i LEFT JOIN-a u T-SQL-u?

Oฤekivano od kandidata: Anketar ลพeli procijeniti vaลกe razumijevanje operacija spajanja i naฤina upravljanja odnosima podataka u SQL upitima.

Primjer odgovora: An INNER JOIN vraฤ‡a samo retke koji imaju odgovarajuฤ‡e vrijednosti u obje tablice, dok a LEFT JOIN vraฤ‡a sve retke iz lijeve tablice, zajedno s odgovarajuฤ‡im retcima iz desne tablice. Ako nema podudaranja, vraฤ‡aju se NULL vrijednosti za stupce iz desne tablice. Ova razlika je kljuฤna pri radu s djelomiฤnim ili opcionalnim odnosima u bazama podataka.


2) Kako biste identificirali i uklonili duplicirane zapise iz tablice u T-SQL-u?

Oฤekivano od kandidata: Anketar ลพeli vidjeti vaลกu sposobnost koriลกtenja prozorskih funkcija i CTE-ova za rjeลกavanje problema s kvalitetom podataka.

Primjer odgovora: Koristio bih Zajedniฤki tabliฤni izraz (CTE) u kombinaciji s ROW_NUMBER() funkcija za prepoznavanje duplikata. Na primjer:

WITH CTE AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS rn
  FROM MyTable
)
DELETE FROM CTE WHERE rn > 1;

Ovaj pristup pomaลพe u uklanjanju duplikata uz zadrลพavanje jednog jedinstvenog zapisa za svaku grupu.


3) Moลพete li objasniti ลกto je CTE (Common Table Expression) i kada biste ga koristili?

Oฤekivano od kandidata: Anketar provjerava vaลกe znanje o strukturiranju upita i privremenim skupovima rezultata.

Primjer odgovora: CTE je privremeni skup rezultata definiran unutar opsega izvrลกavanja jednog upita. Koristan je za pojednostavljenje sloลพenih spajanja i podupita, poboljลกanje ฤitljivosti i omoguฤ‡avanje rekurzivnih upita. U svojoj prethodnoj ulozi ฤesto sam koristio CTE-ove za raลกฤlanjivanje logike viลกekoraฤne agregacije na komponente koje se lakลกe odrลพavaju.


4) Kako se rjeลกava podeลกavanje performansi u T-SQL upitima?

Oฤekivano od kandidata: Anketar ลพeli procijeniti vaลกe iskustvo s optimizacijom upita i rjeลกavanjem problema s performansama.

Primjer odgovora: Poฤinjem ispitivanjem plana izvrลกenja kako bih identificirao spore operacije poput skeniranja tablica ili skupih spajanja. Zatim provjeravam nedostajuฤ‡e indekse, redundantne podupite ili neuฤinkovita spajanja. Takoฤ‘er analiziram statistiku i koristim strategije indeksiranja, poput pokrivanja indeksa ili filtriranih indeksa, za poboljลกanje performansi. Na kraju, pregledavam logiku upita kako bih osigurao da koristi operacije temeljene na skupovima, a ne obradu redak po redak.


5) Opiลกite situaciju kada ste morali otkloniti greลกke u sporo izvrลกavajuฤ‡em upitu u produkciji. Koje ste korake poduzeli?

Oฤekivano od kandidata: Ovo bihevioralno pitanje procjenjuje vaลกe vjeลกtine rjeลกavanja problema i komunikacije u stvarnom svijetu.

Primjer odgovora: Na prethodnoj poziciji, izvrลกavanje upita izvjeลกฤ‡a trajalo je viลกe od 20 minuta. Analizirao sam plan izvrลกavanja i otkrio da jednom od spajanja nedostaje indeks na stupcu stranog kljuฤa. Nakon stvaranja indeksa i aลพuriranja statistike, vrijeme izvoฤ‘enja upita palo je na manje od 30 sekundi. Takoฤ‘er sam dokumentirao ispravak i podijelio ga s timom kako bih sprijeฤio sliฤne probleme u buduฤ‡nosti.


6) ล to su privremene tablice i tabliฤne varijable i po ฤemu se razlikuju?

Oฤekivano od kandidata: Anketar provjerava vaลกe razumijevanje opcija privremene pohrane podataka u T-SQL-u.

Primjer odgovora: Privremene tablice (#TempTable) se stvaraju u tempdb bazi podataka i podrลพavaju indekse, ograniฤenja i statistiku. Varijable tablice (@TableVar) pohranjuju se u memoriji i imaju ograniฤenu statistiฤku podrลกku, ลกto ih ฤini prikladnima za manje skupove podataka. Privremene tablice su bolje za velike ili sloลพene skupove podataka, dok su tabliฤne varijable uฤinkovitije za male, kratkotrajne podatke.


7) Kako biste rijeลกili rukovanje greลกkama i transakcijama u T-SQL-u?

Oฤekivano od kandidata: Anketar provjerava vaลกe razumijevanje integriteta transakcija i rukovanja iznimkama.

Primjer odgovora: koristim BEGIN TRANSACTION, COMMITi ROLLBACK izjave kako bi se osigurala konzistentnost podataka. Takoฤ‘er ukljuฤujem TRY...CATCH blokovi za elegantno rjeลกavanje pogreลกaka. Na primjer:

BEGIN TRY
  BEGIN TRANSACTION
    -- SQL operations here
  COMMIT TRANSACTION
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION
  PRINT ERROR_MESSAGE()
END CATCH

Ovaj pristup sprjeฤava djelomiฤna aลพuriranja podataka kada se pojave pogreลกke.


8) Kako koristite prozorske funkcije u T-SQL-u i moลพete li dati primjer?

Oฤekivano od kandidata: Anketar ลพeli procijeniti vaลกu vjeลกtinu s naprednim analitiฤkim upitima.

Primjer odgovora: Funkcije prozora omoguฤ‡uju izraฤune u skupovima redaka povezanih s trenutnim retkom bez saลพimanja podataka. Na primjer:

SELECT 
  EmployeeID, 
  Salary,
  RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees;

Ovo dodjeljuje rang brojeve zaposlenicima na temelju plaฤ‡e, ลกto olakลกava analizu trendova uฤinka.


9) Recite mi neลกto o sloลพenom T-SQL projektu na kojem ste radili i kako ste pristupili njegovim izazovima.

Oฤekivano od kandidata: Anketar traลพi dubinsko iskustvo, sposobnost rjeลกavanja problema i timski rad.

Primjer odgovora: U svojoj posljednjoj ulozi, izgradio sam ETL cjevovod skladiลกta podataka koristeฤ‡i T-SQL pohranjene procedure. Izazov je bio uฤinkovito rukovanje velikim koliฤinama podataka. Optimizirao sam upite s particioniranim tablicama, inkrementalnim uฤitavanjima i skupnom obradom. Takoฤ‘er sam koordinirao s BI timom kako bih osigurao dosljedan dizajn shema i poboljลกao brzinu izvjeลกtavanja za viลกe od 40%.


10) Kako biste rijeลกili situaciju u kojoj bi pohranjena procedura koju ste napisali uzrokovala zastoj u produkciji?

Oฤekivano od kandidata: Anketar provjerava vaลกe vjeลกtine upravljanja krizama i tehniฤku osvijeลกtenost.

Primjer odgovora: Prvo bih identificirao zastoj koristeฤ‡i SQL Server sys.dm_tran_locks i grafove zastoja. Zatim bih analizirao redoslijed pristupa resursima i refaktorirao postupak kako bih brave dobivao u dosljednom slijedu. U prethodnom sam poslu takoฤ‘er implementirao logiku ponovnog pokuลกaja za pogoฤ‘ene transakcije i zakazao redovito praฤ‡enje kako bih rano otkrio sliฤne obrasce.

Saลพmite ovu objavu uz: