View Full Version : سوال: حداکثر تعداد ستون در یک جدول
tehro0n
چهارشنبه 28 تیر 1391, 00:59 صبح
سلام،
من جدولی دارم که در یک query مجبورم اکثریت ستون ها بسته به خواسته کاربر و به روز کردن اکثریت آن ستون ها را داشته باشم.
می خوام بدونم حداکثر ستون برای یک جدول چقدر می تونه باشه که مشکلی ایجاد نکنه
در حال حاضر 70 ستون دارم که برای نمایش بهتر و راحت تر برای کاربر می خوام این 70 را به 76 یا 77 برسونم
البته باز تاکید می کنم که در هر بار بازدید که تعداد بازدید ها نیز بالای 700000 در روز است این 70 ستون نیاز هستند که با هم و در یک حلقه یا یک بخش نمایش داده شوند
اگه این تعداد زیاده بهترین راه حل چیست؟
با یک کوئری میشه چند select گرفت ولی آیا این بهتر است که این چند select یا update انجام بشه در ازاش تعداد ستون ها کمتر و تعداد جداول بیشتر شه، یا همین حالت مشکلی ایجاد نمی کنه
ممنون
pejman_view
چهارشنبه 28 تیر 1391, 07:51 صبح
سلام
این بحث مربوط می شه به متخصص های دیتابیس، من تا اونجایی که شنید 3000 به بالا محدودیت mysql که این عدد کمی نیست اما اصول طراحی دیتابیس می گه شما می توانید 3000 ستون داشته باشید بدون اینکه ناراحت باشید که این ستون ها باعث افت سرعتتان می شود:
1- اصل نرمالیزاسیون رعایت شود.
2- تا آنجایی که می شود دسته بندی خود را درست کنید. این یعنی چی حالا! فرضاً میای حساب می کنی کاربرها هنگام ورود به سایت فقط 10 تا از این ستون ها را استفاده می کنند! موقعی لاگین کردن به اکانتش از 20 تا و وقتی وارد یه بخش از سایت شدن از 30 تا همزمان استفاده می کنند. خوب حالا با خودت حساب می کنی فرضاً 100 درصد کاربرها به صفحه اصلی سایت سر می زنند پس 10 تا ستون رو نگه می دارم. و از این 100 درصد 80 درصد هم لاگین می کنند خوب میام می بینیم پس می توانم در این جدول 20 تا نگه دارم اما فقط 5 درصد از کاربرها به اون ناحیه خاص می رن و سالی یه بار! پس در نتیجه آن 10 تا را جدا می کنم. و می گذارم هر وقت وارد آن ناحیه شدند این جدول سلکت شود.
حالا یه بحث دیگه هم که باید مد نظر بگیری اینه که ممکن این 20 تا هم جدا شوند! چون بعضی از چیزها نیاز به موتورهای مختلف دیتابیس دارند فرضاً بعضی از ستون ها به MyISAM نیاز دارند و بعضی به InnoDB پس این ها هم باید در دسته مختلف قرار بگیرند.
و حالا یه بحث دیگه هم پیش میاد طبق اصل نرمال سازی گفتند هر چقدر ستون ها بیشتر بشه طبق اصول مشکلی پیش نمیاد اما در بعضی موارد بهتر ستون ها برای خرد شدن در یک جدول دیگه قرار بگیرند.
این ها همشون حرف بودند که دیگه ممکن هر برداشتی بکنی! اگر بگردی نمونه دیتابیس های کار خودت رو پیدا کنی طبق این اصول طراحی شده باشند خیلی راحت تر متوجه می شوی که چی به چیه.
یا علی
موفق باشید
desatir7316
چهارشنبه 28 تیر 1391, 09:43 صبح
tehroon عزیز اگه این مطلب به انجمن پایگاه داده انتقال بدی بهتره
- اصل نرمالیزاسیون رعایت شود.
دوستمون درست می گه
معمولا نرمال سازی تا سطح 3 یا 4 توی دیتا بیس ها انجام می شه مگه اینکه یه دیتابیسی استثنا باشه
حتما نرمال سازی کن
ا آنجایی که می شود دسته بندی خود را درست کنید. این یعنی چی حالا! فرضاً میای حساب می کنی کاربرها هنگام ورود به سایت فقط 10 تا از این ستون ها را استفاده می کنند! موقعی لاگین کردن به اکانتش از 20 تا و وقتی وارد یه بخش از سایت شدن از 30 تا همزمان استفاده می کنند. خوب حالا با خودت حساب می کنی فرضاً 100 درصد کاربرها به صفحه اصلی سایت سر می زنند پس 10 تا ستون رو نگه می دارم. و از این 100 درصد 80 درصد هم لاگین می کنند خوب میام می بینیم پس می توانم در این جدول 20 تا نگه دارم اما فقط 5 درصد از کاربرها به اون ناحیه خاص می رن و سالی یه بار! پس در نتیجه آن 10 تا را جدا می کنم. و می گذارم هر وقت وارد آن ناحیه شدند این جدول سلکت شود.
حالا یه بحث دیگه هم که باید مد نظر بگیری اینه که ممکن این 20 تا هم جدا شوند! چون بعضی از چیزها نیاز به موتورهای مختلف دیتابیس دارند فرضاً بعضی از ستون ها به MyISAM نیاز دارند و بعضی به InnoDB پس این ها هم باید در دسته مختلف قرار بگیرند.
دوست عزیز این مطالب رو از روی تجربه شخصی می گی یا رفرنسی داری؟
tehro0n
چهارشنبه 28 تیر 1391, 12:00 عصر
مطمئنید تا 3000 ستون یا فیلد؟
من رکورد رو نگفتما! این را برای این گفتم چون برای حذف و یا درج در phpMyAdmin تو localhost برای همین 70 ستون هم بعضی وقت ها با اررور مواجه میشم، حالا اگه بشه 3000 تا که دیگه صفحه بندی هم نداره و تا صبح برای ادیت دستی باید اسکرول رو کشید سمت راست :دی
برای انتقال تاپیک هم یک نمونه کپی کردم چون بحث php هم ممکنه باشه!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.