PDA

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



leaping
شنبه 03 مرداد 1394, 20:22 عصر
سلام
میخواستم بدونم استفاده از ستون های زیاد در یک جدول دیتابیس چه معایبی داره و چه جایگزینی؟
مثلا این استاندارد هست که یک جدول 200 تا ستون داشته باشه؟

amg_123
شنبه 03 مرداد 1394, 22:42 عصر
سلام
استاندارد میگه تا حد ممکن باید جدولا تا چند سطح نرمال بشن اگه واقعا نرمال شدش 200 تا ستون داره که گمون نکنم مشکله خاصی با 200 تا ستون باشه
اگه ممکنه اکثر این ستون ها فاقد مقدار باشن, فک کنم بهتر باشه از دیتابیسا NoSQL مثل Mongodb استفاده کنید.

اینم داکیومنت خود MySQL در این رابطه که گفته حداکثر 4096 ستون یه جدول میتونه داشته باشه البته به چند شرط که داخل داکیومنتش هست
https://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

plague
یک شنبه 04 مرداد 1394, 15:05 عصر
وقتی ساپورت میکنه یعنی میتونه و مشکلی پیش نمیاد
ولی طبیعتا هرچقدر عرض تیبل بیشتر بشه (البته باید دید ستون ها از چه نوعی هستن و چه حجمی دارن ) که به طبع سایز و حجم هم میره بالا باید کوئری ها بهینه تر بشن تا از کند شدنشون جلوگیری بشه مثلا شما دیگه نباید select * بزنی و باید فقط اون چیزایی که میخای رو انتخاب کنی

راه حلش هم نرمال سازیه ... ولی به طور کلی باید دید ماهیت سایت چیه و براساس اون استراتژِی مناسبی رو انتخاب کرد

کاری که من در این مواقع انجام میدم میام دیتای اون تیبل رو دسته بندی میکنم بر حسب کاربردشون تو سایت
ستون های پرکاربرد میشن ستون هایی که در جاهای مختلف سایت بهشون نیاز داریم که دسترسی پیدا کنیم - ستون کم کاربرد ستون هایی هستن که فقط تو صفحه خاصی نمایش داده میشن و معمولا صرفا جنبه اطلاع رسانی دارن

مثلا سایتی داریم که افراد خاصی توش ثبت میشن و بیننده ها میتونن اونها رو براوز کنن و مشخصاتشون رو ببینن
ستون های پرکاربردش مثلا میشن
نام - نام کاربری - ایمیل - آواتار - استان - شهر و ....
ستون های کم کاربرد میشن مثلا
نام پدر - تاریخ تولد - تلفن - آدرس - سابقه کاری - تعداد فرزند و ...

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

به دسته دوم فقط 1 جا نیاز میشه اونم صفحه شخصی هر فرده که وقت رو نامش کلیک کردیم و میخایم اطلاعات کاملش رو ببینیم نیازه بهشون دسترسی پیدا بشه

شما بجای اینکه همه رو تو یک یبل جا بدی و شلوغش کنی میتون مثلا 2 تیبل بسازی و اطلاعات رو بین این دو تیبل تقسیم کنی