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

puriya_master

تازه وارد
22/10/14
5
0
1
سلام دوستان من یه بانک دارم 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

تازه وارد
18/4/15
18
0
1
22
عزیز زیر یک ثانیه؟!! اونم 7 میلیون table ؟؟ انتظار نداشته باشین اینقد سریع پیدا کنه.

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

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

Goback

کاربر عضو
25/2/10
311
0
16
33
ساختار جدولتو بذار:

فیلدها

کی ها

ایندکس ها

 

puriya_master

تازه وارد
22/10/14
5
0
1
Screenshot (198).pngScreenshot (199).png

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

 

Goback

کاربر عضو
25/2/10
311
0
16
33
رویpostal ایندکس بذار تست کن و نتیجه رو اینجا بذار تا موارد دیگه رو هم بهت بگم.

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