PDA

View Full Version : سوال: مفهوم واقعي indexو تاثير آن بر برنامه چيست"



mohammadsaleh
دوشنبه 11 خرداد 1388, 09:37 صبح
دوستان سلام

در ايجاد برنامه ها اصولا با ايجاد چند جدول و دادن ارتباط بين آنها و طراحي فرم برنامه اي توليد مي كنيم .
سئوال اينجاست كه index در موقع طراحي جداول بايد ايجاد شود ويا از طريق كد نويسي ويژوال بيسيك نيز مي شود ا ين كار را كرد. و حال ا گر اين كار انجام شود تاثير آن بر برنامه چيست . آيا در سرعت جستجو تاثير مي گذارد يا در سرعت پيمايش ركوردها. و اصولا مي خواهم مطلب كاملي راجع به اين موضوع مطرح شود تا همه دوستداران اكسس از آن به نحو صحيح استفاده كنند.

باتشكر

من علمني حرفا فقد صيرني عبدا. امام علي عليه السلام

bitasoft.ir
جمعه 15 خرداد 1388, 14:10 عصر
دوستان سلام

در ايجاد برنامه ها اصولا با ايجاد چند جدول و دادن ارتباط بين آنها و طراحي فرم برنامه اي توليد مي كنيم .
سئوال اينجاست كه index در موقع طراحي جداول بايد ايجاد شود ويا از طريق كد نويسي ويژوال بيسيك نيز مي شود ا ين كار را كرد. و حال ا گر اين كار انجام شود تاثير آن بر برنامه چيست . آيا در سرعت جستجو تاثير مي گذارد يا در سرعت پيمايش ركوردها. و اصولا مي خواهم مطلب كاملي راجع به اين موضوع مطرح شود تا همه دوستداران اكسس از آن به نحو صحيح استفاده كنند.

باتشكر

من علمني حرفا فقد صيرني عبدا. امام علي عليه السلام

بانک های اطلاعاتی رابطه ای از اندیس ها برای پیدا کردن سریع اطلاعات و پاسخ به پرس و جو ها استفاده می کنند . ساختن یا حذف اندیس ها بر روی کد ِ یک نرم افزار به ندرت تغییری ایجاد می کند اما ایجاد یک اندیس مناسب برای جداول باعث افزایش سرعت به شکلی کاملا ً محسوس می شود . اگر اندیس ها وجود نداشته باشند برای پیدا کردن مقادیر در جداول می بایست تمام سطرها ، یک به یک بررسی شوند و این کار زمان زیادی می خواهد . این کار را scan کردن جداول می نامند .
البته ایجاد Index در جداولی که دارای داده ها کمی هستند موجب کندی کار هم می شود و بیشتر برای جداولی است که دارای داده های بسیار زیادی هستمند.

nabeel
جمعه 15 خرداد 1388, 16:29 عصر
سلام bitasoft.ir



اگر اندیس ها وجود نداشته باشند برای پیدا کردن مقادیر در جداول می بایست تمام سطرها ، یک به یک بررسی شوند و این کار زمان زیادی می خواهد . این کار را scan کردن جداول می نامند .
البته ایجاد Index در جداولی که دارای داده ها کمی هستند موجب کندی کار هم می شود و بیشتر برای جداولی است که دارای داده های بسیار زیادی هستمند.


دوست گرامي ممنون ميشم اگه اظهار نظر دقيقتري در اين خصوص داشته باشيد چونكه به نظر مياد در بخشهايي ، تعريف ارائه شده با عملكردها و ساختارهاي موجود مغايرت داشته باشه .

با تشكر

bitasoft.ir
جمعه 15 خرداد 1388, 23:20 عصر
در کدوم بخشها مغایرت داره؟
بگین تا جواب علمی و منطقی عرض کنم خدمتتون

nabeel
شنبه 16 خرداد 1388, 01:13 صبح
bitasoft.ir سلام

با سپاس از توجه شما دوست گرامی به مطلب ارسالی من .

در صورت امکان توضیحی هر چند مختصر برای بنده و دوستمون که سئوال رو مطرح کردن به تفکیک سر فصلهای زیر ارائه بفرمایید . مطمئناً با پاسخ دهی به این سئوالات مغایرتهایی که به ذهن من خطور کرده مرتفع میشه :

مکانیزم اثر گذاری Index بر روی سرعت به چه شکلی هست و با تکیه به کدام مشخصه
مکانیزم اثر گذاری Index بر روی کاهش سرعت به چه شکلی هست و با تکیه به کدام مشخصه
وقتی صحبت از سرعت میشه , سرعت چه چیزی مورد تاثیر قرار میگیره


... منطقی عرض کنم خدمتتون

بنده جسارت نکردم . امیدوارم در صورتی که سئوال به گونه ای مطرح شده بود که این تعبیر رو به وجود بیاره , عذر خواهی من رو بپذیرید .


قبلاً از پاسخ شما ممنونم

bitasoft.ir
شنبه 16 خرداد 1388, 01:54 صبح
bitasoft.ir سلام

با سپاس از توجه شما دوست گرامی به مطلب ارسالی من .

در صورت امکان توضیحی هر چند مختصر برای بنده و دوستمون که سئوال رو مطرح کردن به تفکیک سر فصلهای زیر ارائه بفرمایید . مطمئناً با پاسخ دهی به این سئوالات مغایرتهایی که به ذهن من خطور کرده مرتفع میشه :

مکانیزم اثر گذاری Index بر روی سرعت به چه شکلی هست و با تکیه به کدام مشخصه
مکانیزم اثر گذاری Index بر روی کاهش سرعت به چه شکلی هست و با تکیه به کدام مشخصه
وقتی صحبت از سرعت میشه , سرعت چه چیزی مورد تاثیر قرار میگیره



بنده جسارت نکردم . امیدوارم در صورتی که سئوال به گونه ای مطرح شده بود که این تعبیر رو به وجود بیاره , عذر خواهی من رو بپذیرید .


قبلاً از پاسخ شما ممنونم

اختیار دارین
بنده خیلی مخلصم.

در مورد سوال هاتون هم باید عرض کنم
اگر اندیس ها وجود نداشته باشند برای پیدا کردن مقادیر در جداول می بایست تمام سطرها ، یک به یک بررسی شوند و این کار زمان زیادی می خواهد . این کار را scan کردن جداول می نامند . scan کردن همیشه باعث اتلاف وقت نمی شود ! ولی وقتی تعداد سطرهای جدول چندین هزار یا به میلیون ها سطر رسید به شدت بر روی کارایی سیستم تاثیر خواهد داشت .
فرض کنید جدولی داریم با سه ستون ، شماره محصول ، مبلغ و نام محصول که هیچ اندیسی روی آن وجود ندارد . اگر در یک جستجو بخواهیم محصولاتی که مبلغ آن بین دو عدد است را پیدا کنیم ، موتور جستجوی بانک اطلاعاتی می بایست تمام سطرها را برای این شرط بررسی کند تا ببیند کدام سطر در این شرط مورد نظر ما صدق می کند . اما اگر یک اندیس بر روی ستون مبلغ ایجاد شده باشد تمامی مقادیر آن مرتب خواهند بود و موتور جستجوی بانک اطلاعاتی به راحتی مبالغ مورد نظر را پیدا کرده و گزارش را تهیه می کند .
برای ستون هایی مانند کلید اصلی ، اندیس می بایست یکتا هم باشد ، یعنی نه تنها مقادیر آن مرتب شده باشد بلکه امکان داشتن مقدار تکراری نیز نداشته باشد . برای اینکه نرم افزار بانک اطلاعاتی بداند که یک مقدار تکراری است یا خیر می بایست کل سطرها را جستجو کند که وقتی یک ستون مرتب شده را بررسی می کند خیلی سریع تر به نتیجه می رسد .

البته مابقی موارد برمیگردد به نحوه طراحی و چگونگی نرمال سازی پایگاه داده.

اگه سوالی بود در خدمتم.
در ضمن من در آدرس http://forum.persiantools.com/f131.html با نام najafzade فعالیت می کنم.
اونجا رو تقریبا من می چرخونم. جدیدا هم می خوام یک بخش آموزش کدنویسی و طاحی پایگاه داده راه اندازی کنم.

فرمایشی بود در خدمتم.

nabeel
شنبه 16 خرداد 1388, 02:47 صبح
bitasoft.ir عزیز

با تشکر مجدد از پاسخ شما , اگه اجازه بدید من هم نظر خودم رو ارائه کنم تا انشاء ا... این موضوع واضحتر و شفاف تر مطرح بشه .
مطلب رو با مثال زیر شروع میکنم :
مطمئناً همه ما دفتر تلفنهایی که در گوشه صفحه اونها تقسم بندی ( در اینجا الفبایی ) وجود داره رو دیدیم .
عملکرد این بخش دسترسی سریعتر به اطلاعات هستش . در دیتا بیس به نوعی این عملکرد رو Index انجام میده ولی با تفاوتهایی خاص

Index الزاماً عدم پیمایش کل رکوردها رو به همراه نداره . به سناریوهای زیر توجه کنید :

رکورد مورد بحث در آخرین ردیف قرار داره ( که البته برای وقوع همیشگی این مورد دیگه باید دیوار خیلی کوتاهی داشته باشید )

ولی دومین امر تنظیمات دو گانه Index هستش . در حالتی که مجوز تکرار داده شده باشه ( Duplicates OK ) پروسه پیمایش همچنان تا آخرین رکورد ادامه پیدا میکنه در واقع شما با انتخاب حالت No Duplicates هست که به اکسس این اطمینان خاطر رو میدید که به اولین رکورد مورد نظر که رسیدی دیگه به دنبال رکورد دیگه ای نگرد حال این رکورد میتونه :

در ردیف اول باشه ( افزایش سرعت بسیار بالا در دیتابیسی با تعداد رکورد زیاد )
در اواسط باشه ( افزایش سرعت قابل توجه در دیتابیسی با تعداد رکورد زیاد )
در انتها باشه ( شاهد هیچ افزایش سرعتی نباشیم بلکه تا حدودی نیز شاهد کندی عملیات نیز باشیم )
توضیح : حالت سوم کندتر به دلیل اینکه در هر صورت عمل پیمایش تا انتها ادامه می یابد ولی اینبار پروسه متب سازی نیز به سیستم تحمیل شده است .


البته ایجاد Index در جداولی که دارای داده ها کمی هستند موجب کندی کار هم می شود و بیشتر برای جداولی است که دارای داده های بسیار زیادی هستمند.

در خصوص این جمله نیاز به شفاف سازی وجود داره .
نقصی هم که مد نظرم هست به شرح زیره :

در واقع اعمالی که باعث بی تاثیری و ناکارمدی Index میشه تعدد Index های یک جدول و اینکه Index بر روی چه چیزی گذاشته شده هستش . ( به طور مثال از دید من Index گذاری مبلغ منطقی نیست )
با هم به مثال دفتر تلفن رجوع میکنم :
تقسیم بندی های دفتر تلفن تا وقتی ارزشمنده که گروههای انتخابی نه خیلی بزرگ و نه خیلی کوچیک باشن به طور مثال در یک دفتر تلفن استاندارد حرف الف در یک گروه , حرف ب در یک گروه و ... قرار میگیرن حالا تصور کنید که تقسم بندی این دفتر تلفن رو خیلی خرد کنیم و برای نبیل پیروزمهر یک صفحه و برای X و Y هم هر یک , یک صفحه رو در نظر بگیریم . در این حالت Index گذاری به عنوان یک ضد سیستم عمل میکنه و نبودش بهتر از بودشنه .

امری که منع میشه تعدد فیلدهای شاخص گذاری شده هستش .

به نظر من Index گذاری باعث کاهش سرعت در دیتا بیسی با تعداد رکورد کم نمیشه .

البته مبحث Index یکی از مباحث پایه ای دیتا بیسها هستش و اطلاع از نحوه رفتار این خصیصه میتونه در ارائه یک برنامه کارآمد تاثیر گذار باشه .

در مجموع از پاسخ ارسالی شما تشکر میکنم و آرزو مند روزهایی خوش برای شما هستم

bitasoft.ir
شنبه 16 خرداد 1388, 10:16 صبح
bitasoft.ir عزیز

با تشکر مجدد از پاسخ شما , اگه اجازه بدید من هم نظر خودم رو ارائه کنم تا انشاء ا... این موضوع واضحتر و شفاف تر مطرح بشه .
مطلب رو با مثال زیر شروع میکنم :
مطمئناً همه ما دفتر تلفنهایی که در گوشه صفحه اونها تقسم بندی ( در اینجا الفبایی ) وجود داره رو دیدیم .
عملکرد این بخش دسترسی سریعتر به اطلاعات هستش . در دیتا بیس به نوعی این عملکرد رو Index انجام میده ولی با تفاوتهایی خاص

Index الزاماً عدم پیمایش کل رکوردها رو به همراه نداره . به سناریوهای زیر توجه کنید :

رکورد مورد بحث در آخرین ردیف قرار داره ( که البته برای وقوع همیشگی این مورد دیگه باید دیوار خیلی کوتاهی داشته باشید )

ولی دومین امر تنظیمات دو گانه Index هستش . در حالتی که مجوز تکرار داده شده باشه ( Duplicates OK ) پروسه پیمایش همچنان تا آخرین رکورد ادامه پیدا میکنه در واقع شما با انتخاب حالت No Duplicates هست که به اکسس این اطمینان خاطر رو میدید که به اولین رکورد مورد نظر که رسیدی دیگه به دنبال رکورد دیگه ای نگرد حال این رکورد میتونه :

در ردیف اول باشه ( افزایش سرعت بسیار بالا در دیتابیسی با تعداد رکورد زیاد )
در اواسط باشه ( افزایش سرعت قابل توجه در دیتابیسی با تعداد رکورد زیاد )
در انتها باشه ( شاهد هیچ افزایش سرعتی نباشیم بلکه تا حدودی نیز شاهد کندی عملیات نیز باشیم )
توضیح : حالت سوم کندتر به دلیل اینکه در هر صورت عمل پیمایش تا انتها ادامه می یابد ولی اینبار پروسه متب سازی نیز به سیستم تحمیل شده است .



در خصوص این جمله نیاز به شفاف سازی وجود داره .
نقصی هم که مد نظرم هست به شرح زیره :

در واقع اعمالی که باعث بی تاثیری و ناکارمدی Index میشه تعدد Index های یک جدول و اینکه Index بر روی چه چیزی گذاشته شده هستش . ( به طور مثال از دید من Index گذاری مبلغ منطقی نیست )
با هم به مثال دفتر تلفن رجوع میکنم :
تقسیم بندی های دفتر تلفن تا وقتی ارزشمنده که گروههای انتخابی نه خیلی بزرگ و نه خیلی کوچیک باشن به طور مثال در یک دفتر تلفن استاندارد حرف الف در یک گروه , حرف ب در یک گروه و ... قرار میگیرن حالا تصور کنید که تقسم بندی این دفتر تلفن رو خیلی خرد کنیم و برای نبیل پیروزمهر یک صفحه و برای X و Y هم هر یک , یک صفحه رو در نظر بگیریم . در این حالت Index گذاری به عنوان یک ضد سیستم عمل میکنه و نبودش بهتر از بودشنه .

امری که منع میشه تعدد فیلدهای شاخص گذاری شده هستش .

به نظر من Index گذاری باعث کاهش سرعت در دیتا بیسی با تعداد رکورد کم نمیشه .

البته مبحث Index یکی از مباحث پایه ای دیتا بیسها هستش و اطلاع از نحوه رفتار این خصیصه میتونه در ارائه یک برنامه کارآمد تاثیر گذار باشه .

در مجموع از پاسخ ارسالی شما تشکر میکنم و آرزو مند روزهایی خوش برای شما هستم

متشکرم از اینکه این مطلب سودمند رو نوشته اید.