PDA

View Full Version : بهینه سازی دیتابیس و جداول



morteza_mokhtari
شنبه 27 مهر 1392, 11:38 صبح
سلام دوستان بنده تویه سایتم یه جدول دارم مثلا به نام x که فیلد های مختلفی داره که سه تا از فیلد های اون ماله استان , شهرستان و شهر هستش.برای هر یک از موارد استان , شهرستان و شهر یک جدول پیاده سازی کردم.فکر کردم چون اطلاعات جداول استان , شهرستان و شهر تغییر نمیکنند به جای اینکه بیام کلید آنها رو تویه جدول x قرار بدم نام خود استان یا شهرستان رو قرار بدم. که نیازی هم به عمل join نباشه. میخواستم نظر شما رو بدونم که آیا بهتره از کلید جداول و ریلیشن(کلید اصلی و خارجی) استفاده کنم یا خود نام استان و شهرستان رو تویه جدول x قرار بدهم
یه سوال دیگه اینکه تویه سایت اطلاعات رو هم بر اساس کلید اصلی واکشی میکنم و هم از طریق کلید خارجی. برای افزایش سرعت واکشی اطلاعات بهتر نیست رویه فیلد کلید خارجی یک noncluster index استفاده کنم؟ آیا موارد دیگه ای هم برای بهینه سازی وجود داره؟ چه توصیه هایی دارید .؟با تشکر

مهدی هادیان2
شنبه 27 مهر 1392, 14:51 عصر
بسم الله الرحمن الرحیم

فکر کردم چون اطلاعات جداول استان , شهرستان و شهر تغییر نمیکنند به جای اینکه بیام کلید آنها رو تویه جدول x قرار بدم نام خود استان یا شهرستان رو قرار بدم. که نیازی هم به عمل join نباشه. میخواستم نظر شما رو بدونم که آیا بهتره از کلید جداول و ریلیشن(کلید اصلی و خارجی) استفاده کنم یا خود نام استان و شهرستان رو تویه جدول x قرار بدهم
با سلام
از چند نظر بهتر است که کلید خارجی رو قرار بدید.


شما همیشه بدترین حالت رو در نظر بگیرید، در صورتی که تغییر نام امری ممکن است.
کلید معمولا از نوع int است که حجم کمتری از حافظه اشغال می کنه در مقابل نام که nvarchar است.

و ..............
موفق باشید.

mahan.2002
شنبه 27 مهر 1392, 15:50 عصر
با سلام
از چند نظر بهتر است که کلید خارجی رو قرار بدید.
شما همیشه بدترین حالت رو در نظر بگیرید، در صورتی که تغییر نام امری ممکن است.
کلید معمولا از نوع int است که حجم کمتری از حافظه اشغال می کنه در مقابل نام که nvarchar است.
با سلام
حرف ایشون درسته ..ولی همان طور که گفتید هر چقدر جوین در برنامه کمتر باشه .. بنظر من بهینه تر..

morteza_mokhtari
شنبه 27 مهر 1392, 18:01 عصر
بسم الله الرحمن الرحیم

با سلام
از چند نظر بهتر است که کلید خارجی رو قرار بدید.



شما همیشه بدترین حالت رو در نظر بگیرید، در صورتی که تغییر نام امری ممکن است.
کلید معمولا از نوع int است که حجم کمتری از حافظه اشغال می کنه در مقابل نام که nvarchar است.


و ..............
موفق باشید.

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

mahan.2002
شنبه 27 مهر 1392, 22:01 عصر
سلام

اگر شما این سه جدول رو جدا طراحی کنید...و اگر نیاز به مراجعه به این جداول باشه در زمان ذخیره سازی باید حتما به سه جدول شهر شهرستان استان مراجعه کنید و استخراج کنید ...
طبیعا پیچیدگی برنامتونو میبرید بالا ..
ولی اگر این جداول رو ندارید و یا دارید ولی نیاز به مراجعه به این جداول و استخراج نام شهر در زمان ذخیره سازی ندارید و تنها این اطلاعات رو از ورودی دریافت میکنید .. بنظرم روشی که مطرح کردید میتونه روش خوبی باشه ..
سرعت برنامتونم میتونه با توجه به اینکه جوین کمتری دارید بنظرم پایین تر بیاره..

موفق باشید.

morteza_mokhtari
یک شنبه 28 مهر 1392, 21:04 عصر
ممنون از دوستایی که پاسخ دادید لطف کنید سوال دوم رو هم یکی پاسخ بده.با تشکر