လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP နှင့် MySQL ၏ Geolocation စုံစမ်းမှုထိရောက်မှုကိုပိုမိုကောင်းမွန်စေရန်လက်တွေ့ကျတဲ့ရည်ညွှန်းနည်းစနစ်များ

PHP နှင့် MySQL ၏ Geolocation စုံစမ်းမှုထိရောက်မှုကိုပိုမိုကောင်းမွန်စေရန်လက်တွေ့ကျတဲ့ရည်ညွှန်းနည်းစနစ်များ

M66 2025-07-09

ပထဝီတည်နေရာ Query Optimization နည်းလမ်း

Web Development တွင်အသုံးပြုသူတည်နေရာပေါ်တွင် အခြေခံ. အကြောင်းအရာသို့မဟုတ် 0 န်ဆောင်မှုများကိုအကြံပြုခြင်းသည်ဘုံလိုအပ်ချက်ဖြစ်လာသည်။ ထိုကဲ့သို့သောပထဝီအနေအထားရှာဖွေမှုများကိုပြုပြင်သည့်အခါ၎င်းသည်လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်အချက်အလက်များကိုပြန်လည်ရယူခြင်းပါဝင်သည်။ စုံစမ်းမှုမြန်နှုန်းတိုးတက်စေရန် MySQL ၏ Spatial indexing နှင့်ကျိုးကြောင်းဆီလျော်သော SQL မဟာဗျူဟာများကိုအသုံးပြုနိုင်သည်။

လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်ပါသောဒေတာစားပွဲတစ်ခုတည်ဆောက်ပါ

တည်နေရာအချက်အလက်များကိုသိမ်းဆည်းရန်အသုံးပြုသော နေရာများဟုခေါ်သည့်နေရာများ နှင့်ကွက်လပ်များတွင် ID , အမည် , လတ်တီတွဒ် နှင့် လောင်ဂျီတွဒ်များ ပါ 0 င်သည်ဆိုပါစို့။ စုံစမ်းမှုစွမ်းအားစွမ်းအင်ကိုတိုးတက်စေရန်အတွက်လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်နယ်ပယ်များအတွက် Spatial အညွှန်းကိန်းတစ်ခုဖန်တီးရန်လိုအပ်သည်။

Talk နေရာများ alplication spatial index_name (လတ်တီက်တို့, လောင်ဂျီတွဒ်) ထည့်ပါ။

Highersine ဖော်မြူလာကိုအသုံးပြု။ အနေအထားစစ်

PHP တွင် SQL ထုတ်ပြန်ချက်များသည်အနီးအနားရှိနေရာများ၏စုံစမ်းမှုရှာဖွေမှုကိုနားလည်သဘောပေါက်ရန်ပစ်မှတ်ထားသောအချက်နှင့်အကွာအဝေးကိုတွက်ချက်ရန်ဆိပ်ကမ်းထုတ်ပြန်ချက်များနှင့်အတူ haversine formula နှင့်ပေါင်းစပ်နိုင်သည်။

$ လတ်တီတွဒ် = 37.7749; // စုံစမ်းမှုအချက် $ လောင်ဂျီတွဒ် = -122.4194 ၏လတ်တီတွဒ်; // စုံစမ်းမှုအမှတ် $ အကွာအဝေး = 10; // query point (ကီလိုမီတာ) ၏အချင်းဝက်

$ query = "Select ID, အမည်, လတ်တီတွဒ်, လောင်ဂျီတွဒ်,
         (6371 * ACS (COS (radians (radians)) * COS (radians (လတ်တီတွဒ်)) *
         COS (radians (လောင်ဂျီတွဒ်) - radians ($ လောင်ဂျီတွဒ်)) +
         Sin (radians ($ လော်ထင်)) * အပြစ် (radians (လတ်တီတွဒ်)) အကွာအဝေးအဖြစ်)
         တည်နေရာကနေ
         အကွာအဝေး <= $ အကွာအဝေးရှိခြင်း
         အကွာအဝေးအားဖြင့်အမိန့် ";

$ ရလဒ် = MySQLI_QUERY ($ ဆက်သွယ်မှု, $ query);

ဤနည်းလမ်းသည် indexing နှင့်အကွာအဝေး filtering ကိုမလိုအပ်သောဖြတ်သန်းမှုလုပ်ငန်းများကိုသိသိသာသာလျှော့ချရန်ပေါင်းစပ်ပြီးတည်နေရာအကြံပြုချက်များသို့မဟုတ်မြေပုံအမျိုးအစားများအတွက်အထူးသဖြင့်သင့်လျော်သည်။

Pagination Query Optimization ကျွမ်းကျင်မှု

ကြီးမားသောဒေတာစာရင်းများကိုပြသသောအခါ Pagination မေးမြန်းချက်များသည်အလွန်အမင်းများများစားစားဖြစ်သည်။ သတ်မှတ်ထားသော ဝါကျများနှင့်ပေါင်းစပ်ထားသောအညွှန်းကွက်များကို အသုံးပြု. သတ်မှတ်ထားသောအကွာအဝေးအတွင်းရှိအချက်အလက်များကိုထိထိရောက်ရောက်ထုတ်ယူနိုင်သည်။

အဆိုပါ paging လယ်ပြင် indexing

အကယ်. paging သည်လယ်ကွင်းပေါ်တွင်အခြေခံသည် (ဥပမာ - အဓိက Key ID ကဲ့သို့) ကိုအခြေခံသည်ဆိုပါကလယ်ကွင်းကိုအညွှန်းရှာဖွေရန်လိုအပ်သည်။

စာအုပ်များ (ID) တွင်အညွှန်းကိန်း index_name ကိုဖန်တီးပါ။

PHP Pagination Quera Code Pegally

အောက်ပါတို့ကိုအသုံးများသော Pagination စုံစမ်းမှုအကောင်အထည်ဖော်မှုနည်းလမ်းများဖြစ်သည်။

$ စာမျက်နှာ = 1; // လက်ရှိစာမျက်နှာနံပါတ် $ perpage = 10; // စာမျက်နှာတစ်ခုချင်းစီအတွက်မှတ်တမ်းနံပါတ် $ Offset = ($ စာမျက်နှာ - 1) * $ perpage;

$ query = "စာအုပ်များမှရွေးချယ်ပါ
         ID အားဖြင့်မှာကြား
         ကန့်သတ် $ Offset, $ perpage ";

$ ရလဒ် = MySQLI_QUERY ($ ဆက်သွယ်မှု, $ query);

ရှုပ်ထွေးသော sququeries များသို့မဟုတ်ကြီးမားသော offset လုပ်ရာများနှင့်နှိုင်းယှဉ်ပါကအညွှန်းကိန်းများနှင့်ပေါင်းစပ်ထားသောအညွှန်းများကိုကန့်သတ်ချက်သည်ဒေတာပမာဏသည်သန်းအဆင့်အထိရောက်ရှိသည့်အခါဒေတာဘေ့စ်ဝန်ထုပ်ဝန်ပိုးကိုသိသိသာသာလျှော့ချနိုင်သည်။

အကျဉ်းချုပ်

တည်နေရာအခြေပြုဒေတာ 0 န်ဆောင်မှုများသို့မဟုတ်ရိုးရာဒေတာအနှောက်အယှက်ဖြစ်စေသောစာရင်းများ, MySQL ရှိ Spatial Indexes နှင့် haversine formersine formersine formersine formersine formersine formersine formersine formersine formersas များကိုလျင်မြန်စွာနားလည်နိုင်သည်။ paging အခြေအနေများတွင်ရှိနေစဉ်လယ်ကွင်းအညွှန်းများနှင့်ကန့်သတ်ချက်ထုတ်ပြန်ချက်များကိုပေါင်းစပ်ခြင်းနှင့်ကန့်သတ်ချက်ထုတ်ပြန်ချက်များသည်အချက်အလက်များပြန်လည်ရယူခြင်းထိရောက်မှုကိုတိုးတက်စေသည်။ developer များသည်လျှောက်လွှာတင်ရန်အတွက်ခိုင်မာသောပံ့ပိုးမှုများပေးရန်သူတို့၏စီးပွားရေးအခြေအနေများအရဤနည်းစနစ်များအရဤနည်းစနစ်များကိုပြောင်းလဲသင့်သည်။