PDA

View Full Version : حرفه ای: چند سوال برای ایجاد دیتابیس بهینه



idocsidocs
جمعه 13 مرداد 1391, 11:38 صبح
اگر بخوایم به ستونهای دیتابیس یه ایندکس بدیم تعداد کاراکترهای هر خونه از اون ستون حتما باید کمتر از 100 باشه؟ دلیل این موضوع چیه و اگر کاراکترها بیشتر شدن چه تاثیری روی کار داره؟

چطور می تونم کاری کنم که محتویات یه ستون تکراری نباشن؟ البته می دونم باید از unic استفاده کنم ولی خونه های این ستون چه شرایطی باید داشته باشه؟

MMSHFE
جمعه 13 مرداد 1391, 15:17 عصر
دوست گرامی، وقتی یک فیلد رو ایندکس میکنید، برای اون فیلد در ساختار داخلی DBMS یک درخت جستجوی دودویی (BST) ایجاد میشه که برحسب تعداد کارکترها، شاخه های این درخت بصورت توانی از 2 گسترش پیدا میکنه. درنتیجه با هر حرف اضافه تر، گره های این درخت تقریباً 2 برابر میشه. مثلاً با یک حرف یک گره، دو حرف سه گره (2+1)، سه حرف 7 گره (4+2+1) و... خواهیم داشت. حالا تصور کنید با 100 حرف چند گره داریم! اینجور وقتها پیمایش این درخت به تنهایی بیشتر از جستجوی ترتیبی رکوردها زمان خواهد برد. درمورد فیلدهای Unique هم شرایط خاصی نیاز نیست منتها باید بدونید فیلد Unique اگه ایندکس نباشه، موجب کاهش سرعت میشه چون با هربار درج شدن یا ویرایش شدن، کل رکوردهای دیگه باید بررسی بشن که اگه ایندکس گذاری نشده باشه، باید جستجوی ترتیبی انجام بشه. بنابراین، طبیعتاً محدودیتهای Index در اینجا هم حکمفرما خواهد بود. موفق باشید.

idocsidocs
جمعه 13 مرداد 1391, 17:19 عصر
مهندس بنظرتون تعداد کاراکترهای مناسب برای ایندکس کردن چند کاراکتر هست؟

اگر طول فیلد رو 20 در نظر بگیریم ولی هر خونه حداکثر 5 کاراکتر داشته باشه، توی سرعت تاثیر منفی داره؟

MMSHFE
جمعه 13 مرداد 1391, 18:28 عصر
موقع ایندکس گذاری، حداکثر طول درنظر گرفته میشه. درنتیجه اگه حتی از VarChar استفاده کنید، باز هم مثل Char طول ثابت براش درنظر گرفته میشه یعنی موقع ایندکس گذاری با n حرف، به تعداد 2 به توان n منهای 1 گره ساخته میشه. بنابراین سرعت در تعداد کارکترهای کمتر از حداکثر طول مجاز، کاهش پیدا نمیکنه اما در اینجا، از ایندکس گذاری به شکل بهینه استفاده نمیکنید. درحقیقت مسئله اصلی اینجا مصرف بالای حافظه هست نه سرعت. البته اگه مطمئن هستین طول کارکترها بیشتر از 5 نمیشه، طول فیلد رو همون 5 بگذارین تا درخت ایندکس کوتاه بشه و اینطوری شاهد افزایش چشمگیر سرعت خواهید بود. موفق باشید.

idocsidocs
جمعه 13 مرداد 1391, 19:48 عصر
البته اگه مطمئن هستین طول کارکترها بیشتر از 5 نمیشه، طول فیلد رو همون 5 بگذارین تا درخت ایندکس کوتاه بشه و اینطوری شاهد افزایش چشمگیر سرعت خواهید بود. موفق باشید. وقتی توی دیتابیس یک میلیون ردیف ذخیره می کنم سایت کند می شه. فکر کنم مشکل بخاطر روش نادرست ایندکس گذاری باشه.

چک می کنم و نتیجه رو اینجا قرار می دم.