میثم
4 سال پیش توسط میثم مطرح شد
2 پاسخ

کار با اعداد میلیادری در php

سلام
من توی پروژم نیاز دارم که از اعداد و ارقام بالا میانگین و .... بگیریم.
فرض کنید توی دیتا بیس SQL من حدود 1000 تا عدد بین 500 میلیون تا 2 میلیارد هست.
برای این طیف میخوام میانگین بگیرم. چطوری توی دیتابیس ذخیره کنم که هم توی محاسبات مشکلی پیش نیاد و هم توی نمایش و ذخیره اطلاعات.
الان با تابع intVal مقادیر رو میگیرم. چون کمتر از 2,147,483,647 برای دریافت مشکلی نیست.
حالا قطعا موقع جمع کردن خیلی بیشتر میشه و
موقع تقسیم کردن اعداد هم باید یه عدد خیلی بزرگ بر تعداد تقسیم بشه. مثلا 20 تریلیون تقسیم بر 1000 و دوباره این مقدار توی رشته int ذخیره بشه.
چه روشی برای بهینه سازی این کار به نظرتون میرسه؟
همین روش معمولی و استفاده از int در SQL رو پیشنهاد می کنید تا فیلد رو به bigint تغییر بدم؟


ثبت پرسش جدید
سهیل حیدری
@hbr 4 سال پیش آپدیت شد
0

به نظرم شما بیاین و نوع داده تونو string بگیرید (نوع فیلد رو) و موقع محاسبه اونهارو تبدیل به bigint کنید ولی به صورت string ذخیره کنید و اگر هم این مشکل داره به نظرم عددتونو تبدیل به اعشار کنید یعنی اینکه مثلا همین 2,147,483,647 تقسیم بر مثلا 100000 کنید که کوچیک شه بعد عملیات رو به صورت اعشاری انجام بدید بعدش در نهایت ضرب در 100000 کنید.


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@adoniya.ir
سلام.
برای این کار شما باید داده هات رو به اصطلاح normalize کنی. یعنی این که کل داده ها رو به یک مقیاس کوچیکتر که محاصبه رو راحت تر کنه تبدیل می کنی و بعد اون مواردی که میخوای رو می تونی انجام بدی.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام