ورود

View Full Version : تفاوت بین دستور Case با تعریف فیلد Static درجدول



morteza271
پنج شنبه 06 مهر 1391, 12:00 عصر
سلام.
فرض کنید یک جدول دارید که یکی از ستونهای آن از نوع int با نام PersonType می باشد.
که اگه مقدار این ستون :
0 باشه یعنی مشتری
1 باشه یعنی کارمند
2 باشه یعنی سایر اشخاص

وقتی که میخوایم لیست افراد رو نشون بدیم نوع آن فرد رو هم نشون میدیم در یک دیتاگریدویو.

حالا شما بگین که کدوم روش از دو روش زیر بهتره :
1- برای این کار داخل کوئری select از case استفاده کنیم و نوع شخص رو مشخص کنیم.

2- به جدول دیتابیس یه ستون دیگه اضافه کنیم (مثلا PersonTypeText) و طوری جدول رو ایجاد کنیم که بطور اتوماتیک این ستون بر اساس ستون PersonType مقداردهی بشه و در هنگام نمایش لیست افراد فقط ستون PersonTypeText رو در select بیاریم.

به نظر دوستان و مهندسان کدوم روش بهتر و بهینه تره؟
با تشکر

Galawij
پنج شنبه 06 مهر 1391, 12:39 عصر
سلام،
به نظر من نیازی نیست براش یک فیلد اضافه قرار بدید، با همون Case می شه کنترل کرد.

morteza271
پنج شنبه 06 مهر 1391, 13:00 عصر
به نظر من نیازی نیست براش یک فیلد اضافه قرار بدید، با همون Case می شه کنترل کرد.
ممنونم دوست عزیز.
فقط لطف کنید دلیلشم بگین.

به نظرمن شاید بهتر باشه یه فیلد اضافی ایجاد کنیم چون با روش اول و استفاده از case سرعت اجرای کوئری select در هنگامیکه تعداد رکوردهای جدول زیاد باشه پایین میاد درست نیست؟
درحالیکه در روش دوم این کار به وسیله ی خود sql انجام میشه و سرعت برنامه کم نمیشه!
نظرتون چیه؟

Galawij
پنج شنبه 06 مهر 1391, 15:00 عصر
فکر نمی کنم این سرعتی که شما می گین خیلی به چشم بیاد.
ولی افزونگی که در بانک با روش شما دارید، برای رکوردهای بیشتر و به مرور زمان می تونه قابل توجه باشه!!!! اگه بگیم فقط یک فیلد با نوع داده varchar بذارید بازهم حجمی که می گیره بیشتر از نوع داده tinyint هست.