کمک در ایجاد بهترین کئوری در دیتابیس

puriya_master

تازه وارد
سلام دوستان من یه بانک دارم 47 ملیون شماره بر اساس کد پستی داخلشه  حالا میخوام کاربر بتونه مثلا 3 شماره اول که زد سیستم بین این 47 ملیون بره بگرده اونهایی که با مثلا پیش شماره 715 شروع شدند رو بشماره
کئوری که من استفاده میکنم این هست

select count(*) from `tblpostal` where LEFT(postal, $Code)= '".$Postall."$code تعداد شماره ها یعنی مثلا 917 که میزنه این میشه 3 یعنی 3 عدد اول
$Postall کدپستی هست که کاربر وارد کرده مثلا 917

این دستور درست اجرا میشه ولی حدود 10 ثانیه یا بیشتر طول میشکه دوستان کسی راه حل بهتری سراغ نداره

ین $code داینامیک هست یعنی کد پستی که کاربر وارد کرده رو میشمرم و میزارم داخلش

به اینصورن هم نوشتمش بازم تو زمان حدود 15 ثانیه بر میگردونه میخوام برسونم زیر 1 ثانیه

کد:
SELECT COUNT(*) FROM `".$table."` WHERE substring(postal,1, $code)=$where_value
 
آخرین ویرایش توسط مدیر:

100t.ir

تازه وارد
عزیز زیر یک ثانیه؟!! اونم 7 میلیون table ؟؟ انتظار نداشته باشین اینقد سریع پیدا کنه.

به نظر من بهتره یه ID به اسم total بزنی و دستورات جمع تعداد رو تو اون بزنی و در نهایت سیستمت بیاد total رو نشون بده. من زیاد سر در نمیارم ولی این به ذهنم رسید.

 
آخرین ویرایش توسط مدیر:

Goback

کاربر عضو
ساختار جدولتو بذار:

فیلدها

کی ها

ایندکس ها

 

puriya_master

تازه وارد
You must be registered for see images attach
You must be registered for see images attach


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

 

Goback

کاربر عضو
رویpostal ایندکس بذار تست کن و نتیجه رو اینجا بذار تا موارد دیگه رو هم بهت بگم.

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

 
بالا