أهم 50 أسئلة وأجوبة لمقابلة T-SQL (2026)

الاستعداد لمقابلة T-SQL؟ حان الوقت لصقل فهمك لكيفية عمل قواعد البيانات تحت السطح. مع أسئلة مقابلة T-SQLيقوم المجندون بتقييم ليس فقط تذكر قواعد اللغة، ولكن أيضًا قدرتك على التعامل مع البيانات وتحسينها وبنائها المنطقي.
تتزايد الفرص في هذا المجال باستمرار مع اعتماد الشركات على الرؤى المستندة إلى البيانات. يبرز المرشحون ذوو الخبرة التقنية القوية ومهارات التحليل والقدرة على حل المشكلات العملية، سواءً كانوا جددًا أو محترفين بخبرة تتراوح بين 5 و10 سنوات. يساعد فهم الأسئلة والأجوبة على المستويين الأساسي والمتقدم قادة الفرق والمديرين والخبراء التقنيين على تحديد مهارات SQL القوية وخبرتهم في المستوى الأساسي.
يستند دليلنا إلى رؤى أكثر من 65 مدير توظيف، وأكثر من 40 مطورًا كبيرًا، ومحترفي البيانات عبر الصناعات المختلفة، مما يضمن التغطية من منطق SQL الأساسي إلى تقنيات التحسين المتقدمة التي يثق بها القادة التقنيون في جميع أنحاء العالم. اقرأ أكثر…
👉 تحميل ملف PDF مجانًا: أسئلة وأجوبة مقابلة T-SQL
أهم أسئلة وأجوبة مقابلة T-SQL
1) ما هو T-SQL، وكيف يختلف عن SQL القياسي؟
Transact-SQL (T-SQL) هو Microsoftامتداد خاص للغة SQL، يستخدم بشكل أساسي مع Microsoft SQL Serverيُحسّن هذا البرنامج لغة SQL القياسية من خلال تقديم ميزات برمجة إجرائية مثل المتغيرات، والشروط، والحلقات، ومعالجة الأخطاء، والوظائف المدمجة. بينما تُركز لغة SQL القياسية على معالجة البيانات (SELECT، INSERT، UPDATE، DELETE)، تدعم لغة T-SQL عبارات التحكم في التدفق (IF…ELSE، WHILE)، ومعالجة المعاملات، ووظائف النظام التي تُمكّن المطورين من كتابة نصوص برمجية مُعقدة.
| البعد | SQL | T-SQL |
|---|---|---|
| امتلاك | معيار ANSI/ISO | Microsoft |
| المنطق الإجرائي | محدود | المدعومة (المتغيرات، الحلقات) |
| معالجة الأخطاء | أدنى | حاول…التقط مدعوم |
| الاستخدام الأساسي | قواعد البيانات العامة | ملقم SQL |
على سبيل المثال:
DECLARE @count INT = 5;
WHILE @count > 0
BEGIN
PRINT @count;
SET @count -= 1;
END;
2) اشرح أنواع الانضمامات المختلفة في T-SQL مع الأمثلة.
تجمع عمليات الوصل في T-SQL صفوفًا من جدولين أو أكثر بناءً على أعمدة ذات صلة. يُعد فهم أنواعها أمرًا بالغ الأهمية لاستعلامات البيانات العلائقية.
| نوع الارتباط | الوصف | مثال على بناء الجملة |
|---|---|---|
| INNER JOIN | إرجاع الصفوف المطابقة فقط | SELECT * FROM A INNER JOIN B ON A.id = B.id; |
| LEFT JOIN | الكل من اليسار + أعواد الثقاب من اليمين | SELECT * FROM A LEFT JOIN B ON A.id = B.id; |
| الانضمام الصحيح | الكل من اليمين + أعواد الثقاب من اليسار | SELECT * FROM A RIGHT JOIN B ON A.id = B.id; |
| الانضمام الكامل | يجمع بين اليسار واليمين | SELECT * FROM A FULL JOIN B ON A.id = B.id; |
| الصليب الانضمام | المنتج الديكارتي | SELECT * FROM A CROSS JOIN B; |
مثال عملي: انضمام Orders و Customers للعثور على العملاء الذين قاموا بتقديم الطلبات باستخدام INNER JOIN.
3) ما هي تعبيرات الجدول الشائعة (CTEs)، وما هي مزاياها؟
يوفر تعبير الجدول المشترك (CTE) مجموعة نتائج مؤقتة مسماة يمكن الرجوع إليها داخل SELECT, INSERT, UPDATE أو DELETE بيان. إنه يحسن قابلية القراءة ويُبسط الاستعلامات المتكررة.
المزايا:
- تعزيز وضوح الاستعلام والصيانة.
- تمكين التكرار (للبيانات الهرمية مثل المخططات التنظيمية).
- يساعد على تجنب الاستعلامات الفرعية المتكررة.
- يزيد من وحدات النمطية في البرامج النصية الكبيرة.
على سبيل المثال:
WITH EmployeeCTE AS (
SELECT EmpID, EmpName, ManagerID
FROM Employees
)
SELECT * FROM EmployeeCTE WHERE ManagerID IS NULL;
4) كيف تختلف الجداول المؤقتة ومتغيرات الجدول في T-SQL؟
يتم استخدام كل منهما لتخزين النتائج الوسيطة، ولكن سلوكهما ونطاقهما يختلفان بشكل كبير.
| الميزات | الجدول المؤقت (#Temp) |
متغير الجدول (@TableVar) |
|---|---|---|
| مخزن في | TempDB | الذاكرة (مع استخدام محدود لـ TempDB) |
| نطاق المعاملات | تتبع المعاملات | مستقلة عن المعاملات |
| الفهارس | عائلات | محدود |
| هاملت | أفضل لمجموعات البيانات الكبيرة | أفضل لمجموعات البيانات الصغيرة |
على سبيل المثال:
DECLARE @TableVar TABLE (ID INT, Name NVARCHAR(50)); INSERT INTO @TableVar VALUES (1, 'Alice');
استخدم الجداول المؤقتة عند العمل بمجموعات بيانات كبيرة أو عند الحاجة إلى فهارس.
5) شرح مفهوم المعاملات في T-SQL ودورة حياتها.
تضمن المعاملة في T-SQL تنفيذ سلسلة من العمليات كوحدة منطقية واحدة. تتضمن دورة الحياة بداية المعاملة, ارتكبو رول باك.
| المرحلة | الوصف |
|---|---|
| بداية المعاملة | يبدأ المعاملة |
| ارتكاب المعاملات | يحفظ جميع التغييرات بشكل دائم |
| معاملة التراجع | التراجع عن جميع العمليات منذ آخر BEGIN |
على سبيل المثال:
BEGIN TRANSACTION; UPDATE Accounts SET Balance = Balance - 100 WHERE AccID = 1; UPDATE Accounts SET Balance = Balance + 100 WHERE AccID = 2; COMMIT TRANSACTION;
إذا حدث خطأ في منتصف الطريق، ROLLBACK يحافظ على سلامة البيانات.
6) ما هو الفرق بين أوامر DELETE وTRUNCATE وDROP؟
| أمر | الوظيفة | العودة | يؤثر على البنية | سرعة |
|---|---|---|---|---|
| حذف | إزالة صفوف محددة | نعم | لا | أبطأ |
| اقتطاع | إزالة جميع الصفوف | لا (عادة) | لا | سريعة |
| إسقاط | حذف الجدول بأكمله | لا | نعم | أسرع |
على سبيل المثال:
DELETE FROM Employees WHERE Department = 'HR'; TRUNCATE TABLE TempData; DROP TABLE OldLogs;
استعمل DELETE للإزالة الانتقائية، TRUNCATE للتطهير، و DROP لإزالة الجدول بالكامل.
7) كيف تعمل معالجة الأخطاء في T-SQL؟
يوفر T-SQL معالجة منظمة للأخطاء من خلال TRY...CATCH كتلة، تسمح للمطورين بإدارة أخطاء وقت التشغيل بسلاسة.
على سبيل المثال:
BEGIN TRY
INSERT INTO Employees VALUES (1, 'John');
END TRY
BEGIN CATCH
PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH;
يعزل هذا النهج العملية الخاطئة ويمنع المعاملة من إتلاف سلامة البيانات. كما يمكن للمطورين الوصول إلى وظائف النظام مثل ERROR_NUMBER() or ERROR_SEVERITY() للتشخيص.
8) ما هي الطرق المختلفة لتحسين أداء استعلام T-SQL؟
يتضمن التحسين ضبط تصميم SQL والفهرسة واستراتيجيات التنفيذ.
التقنيات الرئيسية:
- استعمل الفهرسة الصحيحة على الأعمدة التي يتم الاستعلام عنها بشكل متكرر.
- تجنب
SELECT *- تحديد الأعمدة صراحةً. - استعمل العمليات القائمة على المجموعة بدلا من المؤشرات.
- تحليل خطط التنفيذ باستخدام SQL Server Management Studio.
- استعمل ينضم بكفاءة مع ظروف التشغيل المناسبة.
- تخفيض الاستعلامات الفرعية المتداخلة؛ يفضل استخدام CTEs أو الجداول المؤقتة.
يتضمن ضبط الأداء في T-SQL أيضًا مراقبة إحصائيات تنفيذ الاستعلام باستخدام SET STATISTICS IO ON.
9) ما هي وظائف النافذة، ومتى يجب عليك استخدامها؟
تُجري دوال النافذة حساباتٍ على مجموعةٍ من الصفوف المرتبطة بالصف الحالي، دون دمجها في نتيجةٍ واحدة. وهي مفيدةٌ للترتيب، وحساب الإجماليات، والمتوسطات المتحركة.
على سبيل المثال:
SELECT
EmployeeID,
Salary,
RANK() OVER (ORDER BY Salary DESC) AS RankBySalary
FROM Employees;
تشمل الوظائف المشتركة ما يلي: RANK(), ROW_NUMBER(), DENSE_RANK()و SUM() OVER().
تُعد هذه العناصر بالغة الأهمية بالنسبة لأحمال العمل التحليلية حيث تحتاج إلى بيانات مجمعة وبيانات على مستوى الصف.
10) اشرح الفرق بين الفهارس المجمعة وغير المجمعة.
| الميزات | Clusterمؤشر إد | عدم-Clusterمؤشر إد |
|---|---|---|
| مخزن البيانات | إعادة ترتيب الجدول فعليًا | هيكل منفصل |
| العدد لكل جدول | واحد | متعدد |
| هاملت | أسرع لاستعلامات النطاق | أسرع لعمليات البحث المحددة |
| مثال للاستخدام | المفتاح الأساسي | عمليات البحث الثانوية |
على سبيل المثال:
CREATE CLUSTERED INDEX IX_EmployeeID ON Employees(EmployeeID); CREATE NONCLUSTERED INDEX IX_Dept ON Employees(Department);
يؤثر اختيار نوع الفهرس الصحيح بشكل مباشر على سرعة تنفيذ الاستعلام وكفاءة التخزين.
11) ما هي الإجراءات المخزنة في T-SQL ولماذا يتم استخدامها؟
الإجراء المُخزَّن هو مجموعة مُجمَّعة مُسبقًا من جملة SQL واحدة أو أكثر مُخزَّنة على الخادم. تُحسِّن هذه الجمل الأداء والأمان وإمكانية إعادة الاستخدام من خلال السماح لك بتغليف المنطق وتنفيذه مرارًا وتكرارًا دون الحاجة إلى إعادة تجميعه. تُقلِّل الإجراءات المُخزَّنة من حركة مرور الشبكة وتدعم مُعاملات التنفيذ الديناميكي.
على سبيل المثال:
CREATE PROCEDURE GetEmployeeDetails @Dept NVARCHAR(50)
AS
BEGIN
SELECT EmpName, Position FROM Employees WHERE Department = @Dept;
END;
الفوائد:
- أداء أفضل بفضل التجميع المسبق.
- تحسين الأمان من خلال التنفيذ الخاضع للرقابة.
- صيانة أسهل للكود والتجميع.
12) اشرح الفرق بين الإجراء المخزن والدالة في T-SQL.
| البعد | إجراء مخزن | الوظيفة |
|---|---|---|
| نوع الإرجاع | يمكن إرجاع قيم متعددة | يجب إرجاع قيمة واحدة أو جدول |
| استخدم في SELECT | غير مسموح | مسموح به |
| معالجة الأخطاء | حاول…التقط مدعوم | محدود |
| التنفيذ | تم التنفيذ عبر EXEC |
يستخدم بشكل مضمن مع SQL |
| التحكم في المعاملات | عائلات | غير معتمد |
على سبيل المثال:
- إجراء:
EXEC GetEmployeeDetails 'HR'; - وظيفة:
SELECT dbo.GetSalary(101);
تعتبر الوظائف مثالية للحسابات؛ في حين أن الإجراءات أفضل لمنطق الأعمال ومعالجة البيانات.
13) ما هو المشغل في T-SQL وما هي أنواعه؟
المُحفِّز هو إجراء مُخزَّن خاص يُنفَّذ تلقائيًا استجابةً لأحداث مُحدَّدة (إدراج، تحديث، حذف) في جدول أو عرض. تُستخدم المُحفِّزات لتطبيق قواعد العمل، أو تدقيق التغييرات، أو الحفاظ على سلامة المرجع.
| النوع | الوصف |
|---|---|
| بعد الزناد | حرائق بعد انتهاء الحدث |
| بدلا من الزناد | يتم تنفيذه بدلاً من الحدث المحفز |
على سبيل المثال:
CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
PRINT 'New employee record added!';
END;
تجنب الإفراط في استخدام المحفزات - فقد تؤثر على الأداء وتؤدي إلى تعقيد عملية التصحيح.
14) كيف تتعامل مع القيم NULL في T-SQL؟
NULL يُمثل بيانات مفقودة أو غير معروفة. يوفر T-SQL عدة وظائف للتعامل معها بفعالية:
ISNULL(expression, replacement)→ استبدال NULL بالقيمة الافتراضية.COALESCE(expression1, expression2, ...)→ إرجاع أول قيمة غير فارغة.NULLIF(expression1, expression2)→ يتم إرجاع NULL إذا كانت التعبيرات متساوية.
على سبيل المثال:
SELECT ISNULL(Manager, 'No Manager') AS ManagerName FROM Employees;
أفضل ممارسة: قم دائمًا بأخذ القيم NULL في الاعتبار عند الانضمام والشروط لتجنب النتائج غير المتوقعة.
15) ما هي المؤشرات في T-SQL ومتى يجب تجنبها؟
يسمح المؤشر بمعالجة نتائج الاستعلام صفًا بصف، وهو أمر مفيد للمنطق المعقد حيث لا تكفي العمليات القائمة على المجموعات. ومع ذلك، فإن المؤشرات بطيء و كثيف الموارد مقارنة بالبدائل القائمة على المجموعة.
على سبيل المثال:
DECLARE emp_cursor CURSOR FOR SELECT EmpName FROM Employees; OPEN emp_cursor; FETCH NEXT FROM emp_cursor; -- process CLOSE emp_cursor; DEALLOCATE emp_cursor;
العيوب:
- زيادة استخدام الذاكرة.
- ضعف قابلية التوسع.
- انخفاض الأداء.
البديل: استخدم عمليات ربط الجداول، أو الاستعلامات الفرعية، أو وظائف النافذة كلما أمكن ذلك.
16) اشرح عبارة MERGE وحالات استخدامها.
استخدم MERGE بيان يؤدي INSERT, قم و حذف العمليات في أمر واحد - مثالي لمزامنة جدولين.
مثال على بناء الجملة:
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;
استخدم حالات:
- مستودعات البيانات (مرحلة المزامنة والجداول المستهدفة).
- تحميل البيانات المتزايدة.
- صيانة جداول التدقيق أو الأبعاد.
17) ما هي أنواع الوظائف المحددة من قبل المستخدم (UDFs) المختلفة في T-SQL؟
| النوع | الوصف | مثال |
|---|---|---|
| العددية | إرجاع قيمة واحدة | CREATE FUNCTION GetTax(@Salary DECIMAL) RETURNS DECIMAL |
| جدول القيم المضمن | إرجاع جدول عبر واحد SELECT |
RETURN SELECT * FROM Employees WHERE Dept = 'HR' |
| جدول القيم متعدد العبارات | إرجاع جدول بعد عبارات متعددة | مفيد للمنطق المعقد |
تعمل الوظائف على تعزيز إعادة استخدام التعليمات البرمجية وتحسين تصميم الاستعلام المعياري.
ينبغي أن تكون حتمية (إرجاع نفس النتيجة لنفس المدخلات) كلما أمكن ذلك لتحسين الأداء.
18) ما هو التطبيع وما هي مميزاته وعيوبه؟
التطبيع هو عملية تنظيم البيانات في قاعدة بيانات لتقليل التكرار وتحسين سلامتها. يتضمن تقسيم الجداول إلى كيانات أصغر وأكثر ارتباطًا.
| شكل عادي | قاعدة | مثال |
|---|---|---|
| 1NF | إزالة المجموعات المكررة | تقسيم البيانات المفصولة بفاصلة |
| 2NF | إزالة التبعيات الجزئية | ضمان الاعتماد الكامل على المفتاح الأساسي |
| 3NF | إزالة التبعيات الانتقالية | نقل السمات المشتقة |
المزايا:
- يقلل من التكرار.
- ضمان اتساق البيانات.
- يبسط الصيانة.
العيوب:
- الانضمامات المعقدة.
- المقايضات المحتملة للأداء للاستعلامات التحليلية.
19) ما هي أنواع القيود المختلفة في T-SQL؟
تفرض القيود قواعد على سلامة البيانات داخل الجدول.
| قيود | الهدف | مثال |
|---|---|---|
| مفتاح أساسي | يتم تحديد كل صف بشكل فريد | PRIMARY KEY (EmpID) |
| المفتاح الأجنبي | ربط جدولين | FOREIGN KEY (DeptID) |
| فريد | ضمان قيم العمود الفريدة | UNIQUE (Email) |
| التحقق | التحقق من صحة نطاق البيانات | CHECK (Age >= 18) |
| DEFAULT | يوفر القيم الافتراضية | DEFAULT GETDATE() |
تضمن القيود الدقة والموثوقية، مما يقلل الحاجة إلى التحقق المكثف على مستوى التطبيق.
20) كيف تقوم بإدارة الأذونات والأمان في T-SQL؟
تدير T-SQL أمان قاعدة البيانات عبر تسجيلات الدخول والمستخدمين والأدوار والأذونات.
يمكن منح الأذونات أو إلغاؤها على مستوى الكائن أو المخطط.
على سبيل المثال:
CREATE LOGIN John WITH PASSWORD = 'Strong@123'; CREATE USER John FOR LOGIN John; GRANT SELECT, INSERT ON Employees TO John;
أفضل الممارسات:
- استعمل الأدوار بدلاً من أذونات المستخدم المباشرة.
- تجنب استخدام
saأو حسابات النظام للتطبيقات. - قم بمراجعة الأذونات بانتظام مع
sys.database_permissions.
تضمن إدارة الأذونات المناسبة مبدأ الحد الأدنى من الامتيازات والامتثال لسياسات الأمان.
21) ما هي مستويات عزل المعاملات المختلفة في T-SQL؟
تحدد مستويات عزل المعاملات كيفية عزل معاملة واحدة عن المعاملات الأخرى - الموازنة التناسق مع التزامنيدعم SQL Server ما يلي:
| مستوى العزل | الوصف | قراءة قذرة | قراءة غير قابلة للتكرار | قراءة شبحية |
|---|---|---|---|---|
| قراءة غير ملتزم بها | قراءة البيانات غير الملتزمة | نعم | نعم | نعم |
| اقرأ ملتزم | افتراضيًا؛ تمنع الأقفال عمليات القراءة المتسخة | لا | نعم | نعم |
| قراءة متكررة | يمنع تغيير البيانات حتى يتم الالتزام بها | لا | لا | نعم |
| SERIALIZABLE | عزل كامل؛ أعلى قفل | لا | لا | لا |
| لمحة | يستخدم الإصدارات، وليس القفل | لا | لا | لا |
على سبيل المثال:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; -- your code COMMIT;
استعمل لمحة للأنظمة ذات التزامن العالي لتقليل الحظر دون التضحية بالاتساق.
22) ما هو الجمود في SQL Server، وكيف يمكنك منع حدوثه؟
A مأزق يحدث ذلك عندما تحتفظ معاملتان بأقفال يحتاجها كل منهما، مما يؤدي إلى حالة جمود. يكتشف SQL Server تلقائيًا معاملة واحدة وينهيها كضحية جمود.
سيناريو مثال:
- المعاملة A تقفل الجدول 1 ثم تنتظر الجدول 2.
- تقوم المعاملة B بقفل الجدول 2 ثم تنتظر الجدول 1.
تقنيات الوقاية:
- الوصول إلى الموارد بنفس الترتيب.
- حافظ على المعاملات قصيرة.
- استخدم مستويات العزل المناسبة.
- تجنب تفاعل المستخدم داخل المعاملات.
استخدم محلل SQL أو الأحداث الموسعة لـ tracحالات التعطل في الوقت الحقيقي.
23) وضح الفرق بين التحكم المتشائم والمتفائل في التزامن.
| النوع | الوصف | آلية تأمين | الحلول المقترحة |
|---|---|---|---|
| متشائم | قفل البيانات أثناء المعاملة | قفل ثقيل | بيئات الصراع العالية |
| متفائل | يستخدم إصدار الصفوف، ويتحقق قبل الالتزام | قفل الحد الأدنى | أحمال العمل كثيفة القراءة ومنخفضة التعارض |
على سبيل المثال:
- متشائم: افتراضي
READ COMMITTEDقفل. - مستبشر:
SNAPSHOTعزل مع إصدار الصف.
يعمل التزامن المتفائل على تعزيز الأداء للأنظمة ذات عمليات القراءة الكبيرة والتحديثات غير المتكررة.
24) كيف يمكنك تحليل وتحسين استعلام T-SQL البطيء؟
- التحقق من خطة التنفيذ: تحديد عمليات المسح والمؤشرات المفقودة والعمليات المكلفة.
- استخدم SET STATISTICS IO/TIME: تحليل استخدام وحدة الإدخال/الإخراج ووحدة المعالجة المركزية.
- تجنب المؤشرات والحلقات: استبدال بالعمليات المعتمدة على المجموعة.
- تحسين المؤشر: إضافة أو إعادة تنظيم الفهارس المجزأة.
- استنشاق المعلمة: استعمل
OPTION (RECOMPILE)لتوليد خطط جديدة.
على سبيل المثال:
SET STATISTICS TIME ON; SELECT * FROM Orders WHERE CustomerID = 123;
مراقبة الاستعلامات البطيئة بانتظام مع وجهات نظر الإدارة الديناميكية (DMVs) مثل sys.dm_exec_query_stats هي أفضل ممارسة.
25) ما هو Dynamic SQL وما هي مميزاته ومخاطره؟
يتيح لك SQL الديناميكي إنشاء عبارات SQL بشكل ديناميكي في وقت التشغيل باستخدام المتغيرات.
على سبيل المثال:
DECLARE @sql NVARCHAR(MAX); SET @sql = 'SELECT * FROM Employees WHERE Dept = ''' + @Dept + ''''; EXEC(@sql);
المزايا:
- المرونة في أسماء الجداول المتغيرة أو المرشحات.
- قابلة لإعادة الاستخدام لمخططات متعددة.
العيوب:
- عرضة ل حقن SQL إذا لم يتم تحديد المعلمات.
- أصعب في التصحيح والصيانة.
دائما يستخدم sp_executesql مع معايير السلامة.
26) ما هي الكائنات المؤقتة في T-SQL وكيف تختلف؟
يتم تخزين الكائنات المؤقتة في TempDB والمساعدة في إدارة البيانات الوسيطة.
| نوع الكائن | مجال | مثال |
|---|---|---|
| جدول درجة الحرارة المحلية | جلسة محددة | CREATE TABLE #TempTable |
| جدول درجة الحرارة العالمية | مرئية لجميع الجلسات | CREATE TABLE ##TempGlobal |
| متغير الجدول | محددة للدفعة | DECLARE @Temp TABLE (...) |
أفضل الممارسات:
- تفضيل متغيرات الجدول لمجموعات البيانات الأصغر.
- استخدم الجداول المؤقتة المحلية للبيانات الأكبر حجمًا التي تتطلب الفهرسة.
- قم بإسقاط الجداول المؤقتة بشكل صريح لتحرير الموارد بشكل أسرع.
27) كيف تستخدم وظائف تقسيم النافذة في T-SQL؟
يتيح التقسيم تطبيق وظائف النافذة على مجموعات فرعية محددة من البيانات.
على سبيل المثال:
SELECT
Department,
EmpName,
Salary,
RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS RankInDept
FROM Employees;
الفوائد:
- يحسب التصنيفات والمجموعات والمتوسطات لكل مجموعة بكفاءة.
- يزيل الحاجة إلى الانضمام الذاتي أو الاستعلامات الفرعية.
استخدم حالات: نطاقات الرواتب، وتصنيفات المبيعات، وتحليلات الاتجاهات.
28) ما هو الفرق بين UNION و UNION ALL في T-SQL؟
| بند | التكرارات | هاملت | الحلول المقترحة |
|---|---|---|---|
| UNION | إزالة التكرارات | أبطأ (يستخدم الفرز/التمييز) | دمج مجموعات النتائج بشكل نظيف |
| اتحاد الجميع | يحتفظ بالنسخ المكررة | أسرع | التجميع أو نقل البيانات |
على سبيل المثال:
SELECT City FROM Customers UNION SELECT City FROM Suppliers;
تفضل UNION ALL عندما تكون التكرارات مقبولة والأداء مهم.
29) كيف تعمل مع بيانات JSON في T-SQL؟
يدعم SQL Server وظائف JSON الأصلية لتحليل بيانات JSON وتوليدها.
على سبيل المثال:
DECLARE @json NVARCHAR(MAX) = '{"Name":"John","Age":30}';
SELECT JSON_VALUE(@json, '$.Name') AS Name;
المهام الرئيسية:
JSON_VALUE()→ مثالtracالقيم العددية ts.JSON_QUERY()→ مثالtracكائنات/مصفوفات ts.OPENJSON()→ يقوم بتحليل JSON إلى صفوف.FOR JSON→ تحويل نتائج الاستعلام إلى تنسيق JSON.
مفيد لواجهات برمجة التطبيقات والأنظمة الهجينة والتكاملات NoSQL.
30) كيف يمكنك إدارة وتحسين TempDB في SQL Server؟
TempDB قاعدة بيانات نظامية بالغة الأهمية للتخزين المؤقت وإدارة الإصدارات. سوء الإدارة قد يُسبب مشاكل خطيرة في الأداء.
تقنيات التحسين:
- ضع TempDB على وحدة تخزين سريعة (SSD).
- تحديد حجم البيانات وملفات السجل مسبقًا.
- استخدم ملفات بيانات متعددة (ملف واحد لكل نواة وحدة المعالجة المركزية حتى 8).
- رصد مع
sys.dm_db_file_space_usage. - قم بتنظيف الأشياء المؤقتة بانتظام.
مثال للاستعلام:
SELECT * FROM sys.dm_db_file_space_usage;
إن إدارة TempDB بشكل استباقي تتجنب التنافس على صفحات التخصيص وتحسن إجمالي إنتاجية قاعدة البيانات.
31) ما هي تلميحات الاستعلام في T-SQL، ومتى يجب استخدامها؟
ترشد تلميحات الاستعلام مُحسِّن SQL Server إلى تغيير خطة التنفيذ العادية الخاصة به.
ينبغي استخدامها باعتدال - فقط عندما تفهم تمامًا سياق توزيع البيانات وتنفيذها.
على سبيل المثال:
SELECT * FROM Orders WITH (NOLOCK) WHERE CustomerID = 102;
تلميحات شائعة:
NOLOCK:يقوم بالقراءة بدون أقفال (قد يقرأ بيانات غير ملتزمة).FORCESEEK:قوة البحث عن المؤشر بدلاً من المسح.OPTIMIZE FOR:يرشد قيم المعلمات لتوليد الخطة.RECOMPILE:فرض إعادة التجميع لكل تنفيذ.
تنبيه: الإفراط في استخدام التلميحات قد يُضعف الأداء مع نمو البيانات أو تغير الأنماط. استخدمها فقط عندما تكون خطة المُحسِّن غير فعّالة بشكل واضح.
32) اشرح مفهوم تخزين خطة التنفيذ في SQL Server.
يقوم SQL Server بتخزين خطط التنفيذ مؤقتًا لتجنب إعادة التجميع للاستعلامات المتكررة.
عند تنفيذ نفس الاستعلام مرة أخرى بنفس البنية، فإنه يعيد استخدام الخطة المخزنة مؤقتًا، مما يؤدي إلى تحسين الأداء.
على سبيل المثال:
EXEC GetCustomerOrders @CustomerID = 101;
الفوائد:
- يقلل من تكلفة وحدة المعالجة المركزية.
- تحسين الاتساق في وقت الاستجابة.
المشاكل:
- استنشاق المعلمات يمكن أن يؤدي إلى خطط غير فعالة.
- قد يؤدي تضخم ذاكرة التخزين المؤقت للخطة إلى استهلاك الذاكرة.
تخفيف: استعمل OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN حيث تختلف المعلمات على نطاق واسع.
33) ما هو استنشاق المعلمات وكيف يمكن أن يؤثر على الأداء؟
يحدث استنشاق المعلمات عندما يستخدم SQL Server قيم المعلمات من التنفيذ الأول للاستعلام لتوليد خطة يتم إعادة استخدامها بعد ذلك — حتى لو كانت غير مثالية للتنفيذات اللاحقة.
سيناريو مثال:
- التنفيذ الأول: مجموعة بيانات صغيرة → خطة البحث عن الفهرس.
- التنفيذ التالي: مجموعة بيانات كبيرة → إعادة استخدام نفس الخطة، ولكن ببطء.
الحلول:
- استعمل
OPTION (RECOMPILE)لتوليد خطط جديدة. - استخدم المتغيرات المحلية لإخفاء قيم المعلمات.
- استعمل
OPTIMIZE FORorOPTIMIZE FOR UNKNOWN.
يعد استنشاق المعلمات أحد الأسباب الرئيسية للأداء غير المتوقع في T-SQL.
34) كيف تقوم بمراقبة وتحليل أداء الاستعلام في SQL Server؟
يمكنك استخدام العديد من الأدوات وDMVs لإنشاء ملف تعريف وضبط الأداء:
- خطط التنفيذ:
Ctrl + Mفي SSMS أوsys.dm_exec_query_plan. - إدارة المركبات الآلية:
sys.dm_exec_query_stats- وحدة المعالجة المركزية والمدة.sys.dm_exec_sql_text- نص SQL.sys.dm_exec_requests- الاستعلامات النشطة.
- مراقبة الأداء والأحداث الممتدة على المدى الطويل tracملك.
على سبيل المثال:
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) اشرح دور الإحصاء في تحسين الاستعلام.
تصف الإحصائيات توزيع البيانات (على سبيل المثال، القيم المميزة، والكثافة، والمدرج التكراري) التي يستخدمها المُحسِّن لتقدير عدد العناصر.
إذا كانت الإحصائيات قديمة، فقد يختار SQL Server خططًا رديئة.
أوامر المفاتيح:
UPDATE STATISTICS Employees;sp_updatestats;- إعداد التحديث التلقائي: ممكّن بشكل افتراضي.
أفضل الممارسات:
- احتفظ
AUTO_UPDATE_STATISTICSتمكين. - بالنسبة للجداول الكبيرة، قم بجدولة التحديثات اليدوية.
- استعمل
FULLSCANللمؤشرات الحرجة.
الإحصائيات القديمة هي القاتل الصامت للأداء.
36) ما هو الفرق بين البحث عن الفهرس ومسح الفهرس؟
| تشغيل | الوصف | هاملت | الحلول المقترحة |
|---|---|---|---|
| البحث في الفهرس | ينتقل مباشرة إلى الصفوف المطابقة | سريعة | استعلامات انتقائية للغاية |
| مسح الفهرس | يقرأ جميع إدخالات الفهرس بشكل تسلسلي | أبطأ | الاستعلامات منخفضة الانتقائية |
على سبيل المثال:
SELECT * FROM Orders WHERE OrderID = 123; -- Seek SELECT * FROM Orders WHERE Status = 'Active'; -- May Scan
نصيحة التحسين: إنشاء فهارس مفلترة أو مغطاة لتحويل عمليات المسح إلى عمليات بحث.
37) اشرح الجداول المقسمة ومزاياها.
يقوم التقسيم بتقسيم جدول كبير إلى أجزاء أصغر وأكثر قابلية للإدارة (أقسام)، غالبًا بناءً على عمود نطاق (مثل التاريخ).
الفوائد:
- إدارة البيانات بشكل أسرع (التحميل/التفريغ حسب القسم).
- تحسين أداء الاستعلام على مجموعات البيانات الكبيرة.
- المعالجة المتوازية للمسح المقسم.
على سبيل المثال:
CREATE PARTITION FUNCTION pfRange (DATETIME)
AS RANGE LEFT FOR VALUES ('2022-12-31', '2023-12-31');
حالة الاستخدام: مستودعات البيانات التي تتعامل مع مليارات الصفوف حيث يمكن أرشفة الأقسام القديمة بكفاءة.
38) ما هي CTEs المتكررة، وما هي القيود التي لديها؟
A تعبير الجدول المشترك المتكرر (CTE) يشير إلى نفسه، عادةً للبيانات الهرمية مثل المخططات التنظيمية أو هياكل الشجرة.
على سبيل المثال:
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;
القيود:
- حد التكرار الافتراضي = مستويات 100.
- قد يؤدي ذلك إلى حدوث مشكلات في الأداء إذا كان عمق التكرار مرتفعًا.
- استعمل
OPTION (MAXRECURSION n)لضبط الحد.
39) كيف يتعامل SQL Server مع الأخطاء داخليًا في المعاملات؟
عندما يحدث خطأ داخل معاملة:
- إذا كان كذلك شديد (المستوى > 20)، يتم إنهاء الاتصال على الفور.
- If غير شديد، يمكن أن يتم القبض عليه مع
TRY...CATCH.
على سبيل المثال:
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;
أفضل ممارسة: قم دائمًا بتغليف DML في TRY…CATCH لضمان مقاومة الأخطاء.
40) ما هي بعض تقنيات ضبط أداء T-SQL المتقدمة؟
- تجنب UDFs القياسية في SELECT — تكون الوظائف المضمنة أسرع.
- استخدم الفهارس المفلترة لتقليل حجم الفهرس.
- الاستفادة من OLTP في الذاكرة (Hekaton) للأنظمة ذات التزامن العالي.
- تنفيذ الوضع الدفعي على فهرس مخزن الأعمدة للتحليلات.
- إزالة التحويلات الضمنية عن طريق مطابقة أنواع البيانات.
- استخدام مخزن الاستعلام لمقارنة الخطط التاريخية.
مثال لكشف التحويلات الضمنية:
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%';
إن ضبط الأداء عملية مستمرة - وليس حدثًا لمرة واحدة.
41) كيف يمكنك تحديد الاستعلامات الأكثر استهلاكًا للموارد في SQL Server؟
بإمكانك تحديد الاستعلامات ذات التكلفة العالية باستخدام "عروض الإدارة الديناميكية" (DMVs) التي تسجل إحصائيات التنفيذ التاريخية.
على سبيل المثال:
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;
مقاييس رئيسية:
AvgCPU:متوسط وقت وحدة المعالجة المركزية لكل تنفيذ.AvgReads:كثافة الإدخال/الإخراج.AvgDuration: زمن الانتظار للتنفيذ.
يساعد هذا النهج مسؤولي قواعد البيانات على عزل الاستعلامات الثقيلة قبل أن يلاحظ المستخدمون أي انخفاض في الأداء.
42) كيف يمكنك اكتشاف وإصلاح الفهارس المفقودة في SQL Server؟
خادم SQL تلقائيًا tracتوصيات الفهرس المفقودة من خلال إدارات المرور.
على سبيل المثال:
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;
أفضل الممارسات:
- إعطاء الأولوية للمؤشرات ذات البحث العالي أولاً.
- التحقق من خلال خطط التنفيذ قبل الإنشاء.
- تجنب الإفراط في الفهرسة - فهو يؤدي إلى إبطاء عملية الكتابة.
43) ما الفرق بين النسخ المتطابق لقاعدة البيانات، والنسخ المتماثل، ونقل السجلات؟ping?
| الميزات | الهدف | في الوقت الحقيقي | الفشل | تعقيد |
|---|---|---|---|---|
| المتطابق | نسخة قاعدة البيانات عالية التوفر | نعم | أوتوماتيك | متوسط |
| النسخ المتماثل | توزيع البيانات عبر قواعد البيانات | جزئي | يدوي | مرتفع |
| سفينة خشبيةping | استراتيجية الاسترداد بعد الكوارث القائمة على النسخ الاحتياطي | لا | يدوي | منخفض |
إرشادات الاستخدام:
- النسخ المتطابق → أنظمة OLTP ذات التوفر العالي.
- التكرار → التقارير الموزعة.
- سفينة خشبيةping → تجهيزات استعادة البيانات بعد الكوارث.
44) كيف تقوم باستكشاف مشكلات الحظر في SQL Server وإصلاحها؟
يحدث الحظر عندما تحتفظ إحدى العمليات بأقفال تحتاجها عملية أخرى.
لتحديد الحاصرات:
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;
الحلول:
- تقليل طول المعاملة.
- استخدم عزل اللقطة.
- ضبط الاستعلامات لتقليل القفل.
- تحديد المعاملات المفتوحة طويلة الأمد مع
DBCC OPENTRAN.
45) كيف يساعد مخزن الاستعلامات الخاص بـSQL Server في ضبط الأداء؟
يلتقط متجر الاستعلامات نص الاستعلام والخطط وإحصائيات وقت التشغيل - مما يتيح تحليل الانحدار التخطيطي.
يساعد على تحديد متى يصبح الاستعلام بطيئًا فجأة بسبب تغييرات الخطة.
على سبيل المثال:
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;
الفوائد:
- مقارنة الخطط التاريخية.
- فرض الخطط الجيدة.
- Tracاتجاهات أداء k بمرور الوقت.
46) كيف يمكنك منع حقن SQL في تطبيقات T-SQL؟
الدفاعات الأولية:
- استعمل استعلامات ذات معلمات بواسطة
sp_executesql. - التحقق من صحة جميع مدخلات المستخدم وتطهيرها.
- تجنب الترابط الديناميكي لـSQL.
- توظيف مبدأ الامتياز الأقل لحسابات قواعد البيانات.
مثال آمن:
DECLARE @sql NVARCHAR(MAX); SET @sql = N'SELECT * FROM Employees WHERE Dept = @Dept'; EXEC sp_executesql @sql, N'@Dept NVARCHAR(50)', @Dept = 'HR';
على الرغم من أن حقن SQL هو على مستوى التطبيق، يجب على مسؤولي قواعد البيانات مراجعة الإجراءات المخزنة والسجلات للتنفيذ غير المعلمي.
47) كيف تستخدم الأحداث الممتدة لمراقبة الأداء بشكل عميق؟
الأحداث الموسعة (XEvents) هي إطار عمل خفيف الوزن لمراقبة الأداء - بديل حديث لـ SQL Trace.
على سبيل المثال:
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;
استخدم حالات:
- راقب استعلامات وحدة المعالجة المركزية العالية.
- التقاط الجمود أو الفهارس المفقودة.
- إنشاء بيانات طويلة الأمد في الإنتاج مع الحد الأدنى من النفقات العامة.
48) ما هي المؤشرات المفلترة ومتى يجب استخدامها؟
يفهرس الفهرس المفلتر مجموعة فرعية فقط من الصفوف التي تلبي شرط التصفية — مما يؤدي إلى تحسين الأداء وتقليل التخزين.
على سبيل المثال:
CREATE INDEX IX_ActiveEmployees ON Employees (Department) WHERE Status = 'Active';
الفوائد:
- حجم الفهرس أصغر.
- صيانة أسرع.
- مُحسّن للاستعلامات الانتقائية.
أفضل ل: الأعمدة ذات توزيع البيانات غير المتوازن (على سبيل المثال، السجلات النشطة مقابل السجلات غير النشطة).
49) كيف تقوم بنقل البيانات بشكل آمن بين بيئات SQL Server؟
تتضمن عملية نقل البيانات الآمنة التخطيط لـ الاتساق، ووقت التوقف، والتراجع.
أفضل الممارسات:
- استعمل التكرار المعاملاتي or تغيير التقاط البيانات (CDC) للمزامنة المباشرة.
- تعطيل القيود والمشغلات مؤقتًا.
- استعمل BCP or مباحث أمن الدولة لنقل البيانات بكميات كبيرة.
- التحقق من صحة عدد الصفوف ومجموعات الاختبار.
- قم دائمًا بتشغيل عمليات التحقق من سلامة ما بعد الهجرة (
DBCC CHECKDB).
على سبيل المثال:
bcp Database.dbo.Table out TableData.dat -n -S Server -T
يعد اختبار نصوص الهجرة في المرحلة التجريبية أمرًا غير قابل للتفاوض.
50) كيف يمكنك تحديد مشكلات الاستعلام الحساس للمعلمات (PSQ) وإصلاحها؟
إن أداء الاستعلامات الحساسة للمعلمات غير متسق استنادًا إلى قيم المعلمات - وهو تحدٍ حقيقي متكرر في العالم الحقيقي.
كشف: استعمل متجر الاستعلام or إحصائيات استعلام sys.dm_exec لتحديد خطط متعددة لاستعلام واحد.
استراتيجيات الإصلاح:
- استعمل الخيار (إعادة الترجمة) لكل تنفيذ.
- استعمل تحسين للمجهول لإنشاء خطة عامة.
- إنشاء أدلة الخطة لفرض مسارات التنفيذ المثلى.
- استعمل تلميحات الاستعلام فقط إذا لزم الأمر.
تتطلب القضايا الحساسة للمعلمات تحقيق التوازن بين استقرار الخطة وإمكانية التنبؤ بالأداء.
🔍 أفضل أسئلة مقابلة T-SQL مع سيناريوهات واقعية واستجابات استراتيجية
1) ما هو الفرق بين INNER JOIN و LEFT JOIN في T-SQL؟
المتوقع من المرشح: يريد القائم بالمقابلة تقييم مدى فهمك لعمليات الانضمام وكيفية إدارة علاقات البيانات في استعلامات SQL.
مثال للإجابة: An INNER JOIN يرجع فقط الصفوف التي تحتوي على قيم متطابقة في كلا الجدولين، بينما LEFT JOIN يُرجع جميع الصفوف من الجدول الأيسر، بالإضافة إلى الصفوف المطابقة من الجدول الأيمن. في حال عدم وجود تطابق، تُرجع قيم NULL للأعمدة من الجدول الأيمن. هذا التمييز بالغ الأهمية عند العمل مع العلاقات الجزئية أو الاختيارية في قواعد البيانات.
2) كيف يمكنك التعرف على السجلات المكررة وإزالتها من جدول في T-SQL؟
المتوقع من المرشح: يريد القائم بالمقابلة معرفة قدرتك على استخدام وظائف النافذة وCTEs للتعامل مع مشكلات جودة البيانات.
مثال للإجابة: سأستخدم تعبير الجدول المشترك (CTE) مع ROW_NUMBER() دالة لتحديد التكرارات. على سبيل المثال:
WITH CTE AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS rn FROM MyTable ) DELETE FROM CTE WHERE rn > 1;
يساعد هذا النهج على إزالة العناصر المكررة مع الاحتفاظ بسجل فريد لكل مجموعة.
3) هل يمكنك شرح ما هو CTE (Common Table Expression) ومتى تستخدمه؟
المتوقع من المرشح: يقوم القائم بالمقابلة بالتحقق من معرفتك بهيكلة الاستعلام ومجموعات النتائج المؤقتة.
مثال للإجابة: CTE هي مجموعة نتائج مؤقتة مُحددة ضمن نطاق تنفيذ استعلام واحد. وهي مفيدة لتبسيط عمليات الربط والاستعلامات الفرعية المعقدة، وتحسين قابلية القراءة، وتمكين الاستعلامات التكرارية. في وظيفتي السابقة، استخدمتُ CTE بشكل متكرر لتقسيم منطق التجميع متعدد الخطوات إلى مكونات أكثر قابلية للصيانة.
4) كيف تتعامل مع ضبط الأداء في استعلامات T-SQL؟
المتوقع من المرشح: يريد القائم بإجراء المقابلة تقييم تجربتك في تحسين الاستعلام واستكشاف أخطاء الأداء وإصلاحها.
مثال للإجابة: أبدأ بفحص خطة التنفيذ لتحديد العمليات البطيئة، مثل مسح الجداول أو عمليات الربط المكلفة. ثم أتحقق من الفهارس المفقودة، أو الاستعلامات الفرعية المكررة، أو عمليات الربط غير الفعالة. كما أحلل الإحصائيات وأستخدم استراتيجيات الفهرسة، مثل تغطية الفهارس أو تصفية الفهارس، لتحسين الأداء. وأخيرًا، أراجع منطق الاستعلام للتأكد من أنه يعتمد على العمليات القائمة على المجموعات بدلاً من المعالجة صفًا بصف.
٥) صف موقفًا اضطررت فيه لتصحيح أخطاء استعلام بطيء التشغيل في بيئة الإنتاج. ما هي الخطوات التي اتخذتها؟
المتوقع من المرشح: يقوم هذا السؤال السلوكي بتقييم مهاراتك في حل المشكلات والتواصل في العالم الحقيقي.
مثال للإجابة: في موقع سابق، كان تنفيذ استعلام تقرير يستغرق أكثر من 20 دقيقة. حللتُ خطة التنفيذ واكتشفتُ أن إحدى عمليات الربط تفتقد فهرسًا لعمود مفتاح خارجي. بعد إنشاء الفهرس وتحديث الإحصائيات، انخفض وقت تشغيل الاستعلام إلى أقل من 30 ثانية. كما وثّقتُ الحل وشاركتُه مع الفريق لمنع حدوث مشاكل مماثلة في المستقبل.
6) ما هي الجداول المؤقتة ومتغيرات الجدول، وكيف تختلف؟
المتوقع من المرشح: يقوم المحاور باختبار مدى فهمك لخيارات تخزين البيانات المؤقتة في T-SQL.
مثال للإجابة: الجداول المؤقتة (#TempTable) يتم إنشاؤها في قاعدة بيانات tempdb وتدعم الفهارس والقيود والإحصائيات. متغيرات الجدول (@TableVar) تُخزَّن في الذاكرة، وتدعم إحصاءات محدودة، مما يجعلها مناسبة لمجموعات البيانات الأصغر. تُعدّ الجداول المؤقتة أفضل لمجموعات البيانات الكبيرة أو المعقدة، بينما تُعدّ متغيرات الجدول أكثر فعالية للبيانات الصغيرة وقصيرة العمر.
7) كيف تتعامل مع معالجة الأخطاء والمعاملات في T-SQL؟
المتوقع من المرشح: يقوم القائم بالمقابلة بالتحقق من فهمك لسلامة المعاملات والتعامل مع الاستثناءات.
مثال للإجابة: أنا أستعمل BEGIN TRANSACTION, COMMITو ROLLBACK بيانات لضمان اتساق البيانات. كما أدرجت TRY...CATCH كتل لمعالجة الأخطاء بسلاسة. على سبيل المثال:
BEGIN TRY
BEGIN TRANSACTION
-- SQL operations here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
PRINT ERROR_MESSAGE()
END CATCH
يمنع هذا النهج تحديثات البيانات الجزئية عند حدوث أخطاء.
8) كيف تستخدم وظائف النافذة في T-SQL، وهل يمكنك إعطاء مثال؟
المتوقع من المرشح: يريد القائم بالمقابلة تقييم مدى كفاءتك في الاستفسارات التحليلية المتقدمة.
مثال للإجابة: تتيح دوال النافذة إجراء حسابات عبر مجموعات الصفوف المرتبطة بالصف الحالي دون انهيار البيانات. على سبيل المثال:
SELECT EmployeeID, Salary, RANK() OVER (ORDER BY Salary DESC) AS SalaryRank FROM Employees;
يقوم هذا بتعيين أرقام التصنيف للموظفين بناءً على الراتب، مما يجعل من السهل تحليل اتجاهات الأداء.
9) أخبرني عن مشروع T-SQL معقد عملت عليه وكيف تعاملت مع تحدياته.
المتوقع من المرشح: يبحث القائم بالمقابلة عن العمق في الخبرة، والقدرة على حل المشكلات، والعمل الجماعي.
مثال للإجابة: في وظيفتي السابقة، قمتُ ببناء خط أنابيب ETL لمستودع بيانات باستخدام إجراءات T-SQL المخزنة. كان التحدي يتمثل في التعامل بكفاءة مع كميات كبيرة من البيانات. حسّنتُ الاستعلامات باستخدام الجداول المقسمة، والأحمال المتزايدة، والمعالجة الدفعية. كما نسقتُ مع فريق ذكاء الأعمال لضمان اتساق تصميمات المخططات وتحسين سرعة إعداد التقارير بأكثر من 40%.
10) كيف ستتعامل مع موقف حيث تسبب إجراء مخزن كتبته في حدوث طريق مسدود في الإنتاج؟
المتوقع من المرشح: يقوم المحاور باختبار قدرتك على إدارة الأزمات ووعيك التقني.
مثال للإجابة: أود أولاً تحديد حالة الجمود باستخدام SQL Server sys.dm_tran_locks ورسوم بيانية للجمود. بعد ذلك، أقوم بتحليل ترتيب الوصول إلى الموارد وإعادة هيكلة إجراءات الحصول على الأقفال بتسلسل متسق. في وظيفتي السابقة، طبّقتُ أيضًا منطق إعادة المحاولة للمعاملات المتأثرة، وجدولتُ مراقبة منتظمة للكشف المبكر عن الأنماط المشابهة.
