PDA

View Full Version : سوال: دستور select



baharvand87
پنج شنبه 18 شهریور 1389, 22:16 عصر
سلام من چند تا فیلد دارم فرض کنید id , name, lname, code,sharh حالا فرض کنید به جای * select اگه بنویسم select id, name, lname, code یعنی در واقع sharh رو تو select نیارم آیا در حالت دوم سرعت load بالا میره یا نه فرقی نداره
2-حالا اگه تو جدول اول اصلا فیلد شرح رو حذف کنم و یه جدول جدا کدها و شرح ها را داشته باشم میشه برای گزارش گیری یه فیلد به اسم شرح اضافه کنم که خودکار بر اساس کد پر بشه

reza-abi
پنج شنبه 18 شهریور 1389, 23:18 عصر
سلام من چند تا فیلد دارم فرض کنید id , name, lname, code,sharh حالا فرض کنید به جای * select اگه بنویسم select id, name, lname, code یعنی در واقع sharh رو تو select نیارم آیا در حالت دوم سرعت load بالا میره یا نه فرقی نداره
2-حالا اگه تو جدول اول اصلا فیلد شرح رو حذف کنم و یه جدول جدا کدها و شرح ها را داشته باشم میشه برای گزارش گیری یه فیلد به اسم شرح اضافه کنم که خودکار بر اساس کد پر بشه
سرعت load در یافت اطلاعات ونمایش اون به پارامتر های زیر بستگی داره :
عوامل سخت افزاری:
1-cpu
2-Ram
3-زمان دسترسی به دیسک(پیگرد) *
4-خواندن اطلاعات (انتقال به حافظه اصلی)*
...
نرم افزاری:
1-پراکندگی داده ها روی دیسک*
2- حجم جدول (تعداد رکورد ها )
3-تعداد رکورد های درخواستی*
...
عوامل دیگه مثل دیتابیس مورد استفاده الگوریتم های جستجو و همچنین نوع داده های هر فیلد و تعداد فیلد ها هم تاثیر داره ولی نسبت به عوامل مشخص شده اثرش کمتره
عوامل سخت افزاری 3 و 4 و نرم افزاری شماره 3 بیشترین تاثیر رو دارند
پس select * و select id, name, lname, code تفاوت چندانی ندارند (مگر در موارد محدودیت حافظه که اون هم می شه با صفحه بندی یا استفاده از حافظه مجازی و یا حتی ارتقا حافظه اصلی مشکل رو به خوبی برطرف کرد)
مهمترین بخش کار زمانیه که دستور پیگرد اطلاعات صادر میشه و تا خوندن رکورد ها و انتقال به حافظه ادامه داره حالا زیاد فرقی نمی کنه که برا هر رکورد 3 فیلد انتخاب کنه یا 10 تا

در مورد سوال دوم مطمئنا میشه با کد نویسی این کارو بکنی

mmd2009
پنج شنبه 18 شهریور 1389, 23:21 عصر
با سلام.

سرعت در سوال اولی مطمئنا افزایش پیدا میکنه نسب به قبل که باید یک ستون دیگه رو هم میاوورد.

در سوال دوم هم باید بگم که اصولا کار اشتباهه. شما که با کار قبلی دچار افزونگی داده ها نمیشی پس چرا بخواهی تو یک جدول دیگه یک ستون رو قرار بدی ؟؟؟!!!

ایمان مدائنی
پنج شنبه 18 شهریور 1389, 23:21 عصر
اابته به مقئار رکورد های موجود در جدول هم بستگی داره
اگه تعداد رکوردها کم باشه فرقی نمی کنه ولی اگه زیاد باشه فرق میکنه

baharvand87
پنج شنبه 18 شهریور 1389, 23:46 عصر
با تشکر از توجهتون
آقای دیناروند یکم بیشتر توضیح میدم شمام یکم بیشتر توضیح بدین تو جدول اولی 12 تا فیلد دارم که کد و شرح هم داخلش هست ولی تو جدول دوم فقط کد و شرح (اینم بگم که فضای این فیلد تقریبا دو برابر بقیه فیلدها ست) وجود داره ولی تو گزارشات باید جلوی کد شرح هم بیاد به خاطر همین مجبور بودم تو جدول اولی هم از شرح استفاده کنم اینم بگم شرح تو گزارش ها باید وسط ستون 4و5 بیاد حالا اگه راهی باشه که بتونم این کارو انجام بدم خوب شرح تو جدول اولی رو پاک میکنم در این رابطه دوستان توضیح بدن لطفا
دلیل اینکه اصلا جدول دوم رو گذاشتم اینه که خیلی تنبلن و میخان فیلد شرح خودکار پر بشه
بازم مرسی از توجه همه دوستان

mmd2009
پنج شنبه 18 شهریور 1389, 23:54 عصر
قبل از جواب دادن یک سوال بپرسم.

کد شرح و خود شرح؟ بعنی شما 2 تا فیلد برای این معرفی کردید ؟؟

یعنی اصولا شرح یک مقدار از پیش تعیین شده است یا خیر ؟

اگر از پیش تعیین شده است و ممکن از تکرار شود پس باید یک جدول دیگه براش درست بکنید که افزونگی داده ها نشید.

حالا سوال اون رو جواب بدید تا بشه بیشتر کمک کرد.

baharvand87
جمعه 19 شهریور 1389, 08:48 صبح
بله کاملا از پیش تعیین شده است برای همین یه جدول درست کردم که فقط شامل این دو تا فیلد هست و یه جدول دوم که همه اینها رو داره با 10 فیلد اضافی میدونم این کار باعث افزونگی میشه ولی تو گزارشات میخام که شرح حتما باشه(بین ستون های 4و5)به همین خاطر تو جدول دوم هم شرح رو آوردم حالا اگه راهی باشه که بر اساس کد جد.ل دوم شرح رو از جدول اول تو ستون 4 بریزم مشکلم حل میشه امیدوارم واضح گفته باشم

mmd2009
جمعه 19 شهریور 1389, 08:54 صبح
اره دوست عزیز. اگر اینطوریه که شما میگی پس نیازی نیست تو جدول یک شرح و کد شرح باشن و یک جدول دیگه میتونه مفید باشه. و تو گزارش گیری هم با کد نویسی میتونید اونو حل بکنید .