ورود

View Full Version : سوال: فراخوانی کدام یک از این روشها سریع تر است؟



ahmad65
پنج شنبه 10 اردیبهشت 1388, 00:48 صبح
سلام.
خلاصه و سریع براتون میگم .من 50 تا عدد یک رقمی دارم میخوام تو یک رکورد ذخیرشون کنم و در زمانی دیگه یک رکورد رو که 50 تا عدد رو نگهداری میکنه در 50 تا لیبل نشون بدم . حالا چطوری فراخونی کنم بهتره؟
1: 50 تا فیلد درست کنم هر عدد توی یک فیلد؟
2: 50 تا عدد رو بصورت رشته توی یه فیلد بریزم و در زمان گرفتنشون با یه دستور هر عدد رو جدا کنم و تو لیبل نشون بدم؟

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

متشکرم.

kashaneh
پنج شنبه 10 اردیبهشت 1388, 21:42 عصر
دوست عزیز از نظر حجمی اگر شما 50 عدد را به صورت یک فیلد رشته ای پشت سر هم ذخیره کنی، نیاز به یک جداکننده خواهی داشت... برای اینکار شما به حداقل 49 جداکننده (حتی اگر آن کاراکتر space باشد) نیاز خواهید داشت که یعنی 49 بایت اندازه بیشتر نسبت به ذخیره سازی هر کدام از آن اعداد یک رقمی (1 بایتی) در فیلد جداگانه...
شاید امروزه اینگونه حساسیت در مورد فضا بیهوده باشد اما شما تعداد رکوردهای خود را در این عدد ضرب کنید چندان هم عدد کمی نخواهد بود... ضمن اینکه مدت زمان پردازش برای آن رشته حاوی 50 عدد و جداکردن آنها را هم در نظر بگیرید... در نهایت به نظر می رسد ذخیره کردن هر کدام در یک فیلد مناسبتر باشد... موفق باشی

xxxxx_xxxxx
پنج شنبه 10 اردیبهشت 1388, 22:39 عصر
اگر قراره اين 50 تا عدد فقط يك بار تو جدول وجود داشته باشند.(يعني تكرار نشن) به نظر من بهتره اونها رو يه جوري به عنوان آخرين ركورد تو يكي از فيلدهاي فعلي جدول ذخيره كنيد. البته درصورتي كه طول فيلد 50 كاراكتر يا بيشتر است.
درسته كه نظم جدول، اونهم فقط در انتهاش بهم ميخوره، اما يك استثنا بهتر از افزونگي بيجاست.

AminSobati
پنج شنبه 10 اردیبهشت 1388, 23:23 عصر
سلام،
اگر خیلی کلاسیک به موضوع نگاه کنیم، در نرمال فرم اول میگه هر فیلد باید Atomic باشه، یعنی قابل تجزیه به مقادیر کوچکتر نباشه. لذا کار صحیح اینه که هر کدوم فیلد جداگانه داشته باشند. اما اگر واقعا شما نیازی ندارید تا فرضا یک جزء رو جداگانه فراخوانی کنید، به هر حال میشه از کاراکتر جداکننده استفاده کنید یا حتی XML رو مد نظر قرار بدین