လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Next_Result () သည်စုံစမ်းမှုစွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်ပါသလား။ ဆောင်းပါးခွဲခြမ်းစိတ်ဖြာမှု

Next_Result () သည်စုံစမ်းမှုစွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်ပါသလား။ ဆောင်းပါးခွဲခြမ်းစိတ်ဖြာမှု

gitbox 2025-05-02

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP နှင့် MySQL ကိုအသုံးပြုသောအခါ developer များစွာသည်ပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရပါက SQL ထုတ်ပြန်ချက်များစွာ , MySQLI :: Next_result () နောက်ဆက်တွဲလုပ်ဆောင်မှုကိုမကြာခဏမေးခွန်းထုတ်လေ့ရှိသည်။ ယနေ့ကျွန်ုပ်တို့သည်အမှန်တရားကိုနားလည်ရန်ဤပြ and နာ၏ ins နှင့် ops ကိုလေ့လာကြမည်။

1 ။ Next_result ()

MySQLI_Multi_Query () ကို သုံး. SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါကြေငြာချက်တစ်ခုစီ၏ရလဒ်များကိုကိုယ်တိုင်ပြုလုပ်ရန်လိုအပ်သည်။ ယခုအချိန်တွင် Next_result () ၏ function သည် internal pointer ကိုနောက်လာမည့် SQL ထုတ်ပြန်ကြေငြာချက်၏ရလဒ်ကိုပြောင်းရွှေ့ရန်ဖြစ်သည်။

 $conn = new mysqli("localhost", "user", "password", "database");

$sql = "SELECT * FROM users; SELECT * FROM orders;";

if ($conn->multi_query($sql)) {
    do {
        if ($result = $conn->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
    } while ($conn->next_result());
}

2 ။ _Result () နှေးကွေးပါသလား။

1 ။ Essence ခွဲခြမ်းစိတ်ဖြာ

Next_Result () သည် မရှိမဖြစ်လိုအပ်တဲ့စုံစမ်းမှုတစ်ခုကိုမလိုအပ်ပါ ။ ၎င်း၏အဓိကအချိန်စားသုံးမှုမှလာ:

  • ကွန်ယက် latency (client-server ဆက်သွယ်ရေး)

  • ကြီးမားသောဒေတာပမာဏ (ရလဒ်အစုသည်ကြီးမားသည့်အခါမှတ်ဉာဏ်ကိုလောင်လိမ့်မည်)

  • မရှိမဖြစ်လိုအပ်သောပြုပြင်ထုတ်လုပ်မှု (မပြောင်းလဲသောရလဒ်များ) သည်သန့်ရှင်းရေးပြုလုပ်ရန်လိုအပ်သည်)

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

2 ။ စွမ်းဆောင်ရည်နှိုင်းယှဉ်စမ်းသပ်မှု

ကျွန်ုပ်တို့သည်အောက်ပါတို့အားအောက်ပါ Multi-query statement quertion quertion quertion ကိုလုပ်ဆောင်သည်ဆိုပါစို့။

 $sql = "
  SELECT * FROM big_table_1;
  SELECT * FROM big_table_2;
  SELECT * FROM big_table_3;
";

ဇယားတစ်ခုစီအတွက်ဒေတာပမာဏသည်အတန်း 50,000 ခန့်ရှိသည်။

ကျနော်တို့စမ်းသပ်မှုနှစ်ခုစုံကိုလုပ်ဆောင်:

  • A: Multi_query () + + Next_result () ကို ပုံမှန်အားဖြင့်ခွဲခြမ်းစိတ်ဖြာရန်။

  • B: Multi_query () ကိုသုံးပါ။

စာရင်းအင်းများမှာ (စက္ကန့်ပိုင်းအတွင်း) တွင်အောက်ပါအတိုင်းဖြစ်သည်။

ပုံစံ ကွပ်မျက်အချိန်
တစ်စီး 0.82s
0.48s

သင်မြင်နိုင်သည့်အတိုင်းသင်နောက်ဆက်တွဲရလဒ်ကိုမလိုအပ်ပါကသင် Next_result () ဟုမခေါ်ပါကပိုမိုမြန်ဆန်လိမ့်မည်။ သို့သော်သင်ဤအချက်အလက်များကိုရယူရန်လိုအပ်သရွေ့၎င်းသည်မရှိမဖြစ်လိုအပ်သည်။

3 ။ မှန်ကန်သောအသုံးပြုမှုနှင့် optimization အကြံပြုချက်များ

1 ။ မလိုအပ်ပါက၎င်းကိုမသုံးပါနှင့်

ဖော်ပြချက်တစ်ခု၏စုံစမ်းမှုရလဒ်ကိုသင်သာလိုအပ်လျှင် Multi_Query () ကိုအသုံးပြုခြင်းကိုရှောင်ရန်ကြိုးစားပါ။

 // ပိုပြီးအကြံပြုလမ်း
$result = $conn->query("SELECT * FROM users");

2 ။ ရလဒ်ကို set အရွယ်အစားကိုလျှော့ချပါ

Multi_query () ကိုအသုံးပြုသောအခါ, ဥပမာအားဖြင့်လိုအပ်သောအကွက်များကိုသာရွေးချယ်ပါသို့မဟုတ်နံပါတ်ကိုကန့်သတ်ရန်က န့်သတ်ချက်ကို သုံးပါ။

 SELECT id, name FROM users LIMIT 100;

3 ။ အရင်းအမြစ်များကိုဖြန့်ချိရန်အာရုံစိုက်ပါ

Store_Result ( ) ကို Call _Result () () အခမဲ့ () အခမဲ့ () အခမဲ့ () () အခမဲ့ () ကိုခေါ်ရန်သေချာသည်, အထူးသဖြင့်ကွင်းဆက်များတွင်အသုံးပြုသောအခါ။

4 ။ နိဂုံးချုပ်

  • Next_result () သူ့ဟာသူသည် "စုံစမ်းမှုကိုနှေးကွေးစေ" မဟုတ်, ၎င်းသည်လုပ်ငန်းစဉ်၏အစိတ်အပိုင်းတစ်ခုသာဖြစ်သည်။

  • အမြန်နှုန်းကိုအမှန်တကယ်အကျိုးသက်ရောက်စေသောအရာသည်အချက်အလက်ပမာဏဖြစ်ပြီးသင်အမှန်တကယ်ရလဒ်အားလုံးကိုလိုအပ်ပါသလား။

  • သင်တစ် ဦး စုံစမ်းမှုတစ်ခုသာလိုအပ်ပါက multi_query () ကို ရှောင်ပါ။

  • ရလဒ်မျိုးစုံပြုပြင်ထုတ်လုပ်မှုကိုလိုအပ်ပါက Next_result () သည်သင်၏ကောင်းကျိုးအတွက်ဖြစ်သည်။

ပိုမိုနက်ရှိုင်းသောစွမ်းဆောင်ရည်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အသေးစိတ်နှိုင်းယှဉ်ချက်ကို https:/gitbox.net/artet/artics/db-porformance တွင်အသေးစိတ်နှိုင်းယှဉ်ကြည့်ပါ။