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

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:
- Koristiti pravilno indeksiranje na ฤesto upitanim stupcima.
- Izbjeฤi
SELECT *โ eksplicitno navedite stupce. - Koristiti operacije temeljene na skupovima umjesto kursora.
- Analizirajte planove izvrลกenja pomoฤu SQL Server Management Studio.
- Koristiti Uฤinkovito se PRIDRUลฝUJE uz odgovarajuฤe uvjete UKLJUฤENO.
- 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
saili 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:
- Pristupite resursima istim redoslijedom.
- Neka transakcije budu kratke.
- Koristite odgovarajuฤe razine izolacije.
- 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 COMMITTEDzakljuฤavanje. - Optimistiฤan:
SNAPSHOTizolacija 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?
- Provjerite plan izvrลกenja: Identificirajte skeniranja, nedostajuฤe indekse i skupe operacije.
- Koristite SET STATISTICS IO/TIME: Analizirajte koriลกtenje I/O i CPU-a.
- Izbjegavajte kursore i petlje: Zamijenite operacijama temeljenim na skupovima.
- Optimizacija indeksa: Dodajte ili reorganizirajte fragmentirane indekse.
- 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:
- Postavite TempDB na brzu pohranu (SSD).
- Prethodno odredi veliฤinu podataka i datoteka zapisnika.
- Koristite viลกe podatkovnih datoteka (1 po jezgri procesora, do 8).
- Monitor s
sys.dm_db_file_space_usage. - 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:
- Koristiti
OPTION (RECOMPILE)za stvaranje novih planova. - Koristite lokalne varijable za maskiranje vrijednosti parametara.
- Koristiti
OPTIMIZE FORorOPTIMIZE 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 + Mu SSMS-u ilisys.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_STATISTICSomoguฤen. - Za velike tablice zakaลพite ruฤna aลพuriranja.
- Koristiti
FULLSCANza 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?
- Izbjegavajte skalarne UDF-ove u SELECT-u โ inline funkcije su brลพe.
- Koristite filtrirane indekse kako bi se smanjila veliฤina indeksa.
- Iskoristite OLTP u memoriji (Hekaton) za sustave s visokom konkurentnoลกฤu.
- Izvrลกavanje u paketnom naฤinu rada na indeksima columnstorea za analitiku.
- Uklonite implicitne konverzije usklaฤivanjem tipova podataka.
- 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:
- Koristiti parametrizirani upiti preko
sp_executesql. - Validirajte i dezinficirajte sve korisniฤke unose.
- Izbjegavajte dinamiฤko SQL spajanje kodova.
- 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:
- Koristiti transakcijska replikacija or prikupljanje podataka o promjenama (CDC) za sinkronizaciju uลพivo.
- Privremeno onemoguฤite ograniฤenja i okidaฤe.
- Koristiti BCP or SSIS za prijenos velikih koliฤina podataka.
- Provjerite broj redaka i kontrolne zbrojeve.
- 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:
- Koristiti OPCIJA (REKOMPAJLIRAJ) za svako izvrลกenje.
- Koristiti OPTIMIZIRAJ ZA NEPOZNATO za izradu generiฤkog plana.
- stvoriti vodiฤi za planove kako bi se osigurali optimalni putevi izvrลกenja.
- 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.
