الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مجموعة اسئلة فى index

بدأه shosho842000 في 9 أكتوبر 2011 · 6 رد · 1,069 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمته الله وبركاته

1-

هو ممكن حد يشرحلى طريقة الindex بتكون ازاى لانى بكون فاهما بس بنساها يعنى عايزاة اعرف هو يتم التخزين فين وبتشتغل ازاى طريقته عملها لان فى حاجة اسمها heap and leaf level data

2-

هو ايه فائدة انى اعمل sort in sort temp_db

3-

الفرق بين CLUSTERED والثانى انه ينشى على pk والثانى على fk

الاول ممكن انشىء واحد بس الثانى انشى منه كثير

4-

هو unique index كانى باخلى الحقل دا uique يمنع تكرار البيانات

بيكون على nonCLUSTERED بس مينفش اعمل على CLUSTERED

5-

IGNORE_DUP_KEY = ON مش بيشتغل غير على index من نوع unique

ودا خاص بعدم التكرار مش بيقول بيانات متكررة طيب مهو unique

كدا الخاصية دى ضافت ايه طيب ايه الفرق بينهم

6-

CREATE NONCLUSTERED INDEX IX_PurchaseMain_PurchaseId

ON Purchasing.PurchaseMain (PurchaseId)

WITH (DROP_EXISTING = ON);

دا زى

IF EXISTS (SELECT name FROM sys.indexes

WHERE name = N'IX_PurchaseMain_PurchaseId')

DROP INDEX IX_PurchaseMain_PurchaseId ON Purchasing.PurchaseMain;

ويرجع يعمله طيب ايه الفرق

7-

CREATE NONCLUSTERED INDEX IX_Address_PostalCode

ON Person.Address (PostalCode)

INCLUDE (AddressLine1, AddressLine2, City);

ما وظيفتها دى

هو فائدة الindex بشكل عام هو عمل sort للبيانات بس كانى باعمل order by يعنى

وشكرا اتمنى ان اجد من الاعضاء الاهتمام

#2

هو 20 مشاهد ومفيش ولا رد يعنى الموضوع صعب اوى كدا

اكيد الاخوه الاعضاء لو كل واحد جاوب على سؤال او اعطانى خبيرة

شكرا ليكم

#4

هو اولا شكرا على ردك

ثانيا هو انا معلش عايزاة رد على الاسئلة دى بس

يعنى مش لاقيها فى الشرح هتعب حضرتك لو جاوبتى عليها

شكرا ليك

#5

هو لازم cluserted index يكون unique

ايه الفرق بين دول

non-leafand leaf data and what is the heap

انا عارفا انى بتكلم فى حاجات كثيرة بس لانى دا بس الى واقف معايا وشكرا ليك

#6

انت تحتاج الي كتاب مبادء الsql server لان اسئلتك في اساسيات

#7
اقتباس
هو ممكن حد يشرحلى طريقة الindex بتكون ازاى لانى بكون فاهما بس بنساها يعنى عايزاة اعرف هو يتم التخزين فين وبتشتغل ازاى طريقته عملها لان فى حاجة اسمها heap and leaf level data

هشرحها في الاخر

اقتباس
هو ايه فائدة انى اعمل sort in sort temp_db

بصراحه انا مش فاهم المقصود والجزء ده معداش عليا

اقتباس
الفرق بين CLUSTERED والثانى انه ينشى على pk والثانى على fk

الاول ممكن انشىء واحد بس الثانى انشى منه كثير

اولا ال Clustered Index اقدر اعمله علي اي Column مش شرط انه يكون Pk او FK بس هي كل افكرة ان لما بنيجي ننشي جدول جديد ونخصص Column انه يكون PK هو بيبقي Clustered Index لوحده طبعا ممكن اننا نشيله من علي PK ونخليه علي اي Column تاني دي حريه شخصيه

الفرق الجوهري بين Clustered Index و NONClustered index

الاول بياخد البيانات زي ما هي موجوده في الجدول وبيكون حاجه وهميه اسمها Index Pages وبيبدأ فيها يرتب الداتا وبعد العمليه دي بيحفظ الداتا علي ملفات MDF و NDF ان وجدت

وده بيتعمل مرة واحده بس في الجدول لانه بييرتب البيانات علي اساس معين وبيحفظها بالترتيب

زي مثلا Column الاسم بيفلتر حرف (ا) وبعد ما يخلص يخش علي (ب) وهكذا فمينفع اني ارتب باكثر من اساس

اما NONClustered Index فبياخد الداتا زي ما هي في الجدول يحفظها في ملفات MDF و NDF ان وجدت ولكن يعطي كل بيان رقم مختلف في Index Pages بمعني

مثلا انا عندي Column الاسم فيه البيانات دي

الاسم Clustered Index NONClustered Index

احمد احمد -----01284 احمد

محمد محمد ----56218 حسن

يحي يحي -----97214 علي

حسن حسن ----12447 محمد

علي علي -----48761 يحي

ده الفرق بينهم لذلك اقدر اعمل اكتر من NONClustered ولكن لازم يكون في واحد بس Clustered

اقتباس
هو unique index كانى باخلى الحقل دا uique يمنع تكرار البيانات

بيكون على nonCLUSTERED بس مينفش اعمل على CLUSTERED

لا اقدر اعمل Unique Clustered Index عادي جدا بس لازم يكون الجدول مفهوش اصلا Clusrtered Index وطبعا فهمنا ليه فوق

اقتباس
IGNORE_DUP_KEY = ON مش بيشتغل غير على index من نوع unique

ودا خاص بعدم التكرار مش بيقول بيانات متكررة طيب مهو unique

كدا الخاصية دى ضافت ايه طيب ايه الفرق بينهم

دي فكرتها ان مثلا لو لو عندي Column معمول عليه Unique Index وموجود فيه مثلا رقم 1 وانا اجيت ادحله تاني هيقولي ان في خطأ ويطلع السبب اما لو استخدمت الخاصيه

IGNORE_DUP_KEY = ON فمش هيطلع رساله خطأ وهيبقي 0 Row Affected يعني مش هيحط القيمه في الجدول ومش هيطلع خطأ

اقتباس

CREATE NONCLUSTERED INDEX IX_PurchaseMain_PurchaseId

ON Purchasing.PurchaseMain (PurchaseId)

WITH (DROP_EXISTING = ON);

دا زى

IF EXISTS (SELECT name FROM sys.indexes

WHERE name = N'IX_PurchaseMain_PurchaseId')

DROP INDEX IX_PurchaseMain_PurchaseId ON Purchasing.PurchaseMain;

ويرجع يعمله طيب ايه الفرق

مفيش فرق الفرق الوحيد في كتابه ال Syntax

اقتباس
CREATE NONCLUSTERED INDEX IX_Address_PostalCode

ON Person.Address (PostalCode)

INCLUDE (AddressLine1, AddressLine2, City);

ما وظيفتها دى

دي وظيفتها انها بتكريت NONClustered Index اسمها IX_Address_PostalCode علي الجدول Person.Address الحقل PostalCode لحد هنا متفقين

طب ايه بقي معني INCLUDE (AddressLine1, AddressLine2, City

هقولك

المعروف ان عمليات ال Index لو عدد المستخدمين ضحم وعدد البيانات هائل فده هيعمل Over Load علي السيرفر فلذلك بينحاول نقل من عدد ال Column اللي يتعمل عليها Index

فهنا مايكروسوفت قالت حاجه حلوة اوي ونشوف مع بعض علي المثال ده قالت لو انت عندك Column بتعمل عليه Select كتير طبعا هنعمله Index بس عندك باردو كذا Column تاني بيتعمل عليهم Select بس قليل جدا ممكن تعمل عليهم Index بالطريقه دي

يبقي هنا مفهوم الكود ده اعمل Index علي Person.Address (PostalCode وكمان خلي AddressLine1, AddressLine2, City ضمن الIndex

ودي بتخفف عمليه Over Load اللي بتحصل علي السيرفر

اقتباس
هو فائدة الindex بشكل عام هو عمل sort للبيانات بس كانى باعمل order by يعنى

وشكرا اتمنى ان اجد من الاعضاء الاهتمام

في فرق كبير جدا بين Sorting و Index

Sort بنستخدمها بعد ما بنطلع البيانات من الجدول علشان نرتبها بشكل معين

اما Index بنعمله علشان لما نيجي نستعلم من الجدول اولا يكون في سرعه في الاستعلام وكمان يبقي مفيش Over Load علي السيرفر

بخصوص بقي السؤال الاول

ايه هو ال Heap

اولا علشان نقدر نفهمه لازم نعرف كويس الداتا بتتخزن ازاي علي ملفات MDF

بتتخزن الداتا بتاعتنا علي شكل Pages كل Table بيمثل مجموعه من Pages وكل واحده منهم ليها رقم معين

هنا بيبدأ دور Heap لما نيجي مثلا نعمل استعلام عن جدول معين هنا بيبدأ ال Heap يشوف اسم الجدول ويعرف السيكول سيرفر ان الجدول ده بيبدأ من الPage رقم كام وبيبدأ السيكوال البحث علي هذا الاساس من اول ال Page اللي اخبره بيها ال Heap حتي ان يجد المعلومه

طب ايه الفرق بين ال Heap و Index؟

ال Heap بيخبر السيكول عند بدايه Page للجدول الذي سيبحث منه

اما Index هناك نوعان وشرحهم بالاعلي

ولما بعمل Index ايه وظيفه الHeap؟

لما بعمل Index الHeap بتتلغي وظيفته تماما

اتمني ان اكون اوضحت الفكرة بشكل مبسط

مواضيع مشابهة