ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP နှင့် MySQL ကိုအသုံးပြုသောအခါ developer များစွာသည်ပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရပါက SQL ထုတ်ပြန်ချက်များစွာ , MySQLI :: Next_result () နောက်ဆက်တွဲလုပ်ဆောင်မှုကိုမကြာခဏမေးခွန်းထုတ်လေ့ရှိသည်။ ယနေ့ကျွန်ုပ်တို့သည်အမှန်တရားကိုနားလည်ရန်ဤပြ and နာ၏ ins နှင့် ops ကိုလေ့လာကြမည်။
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());
}
Next_Result () သည် မရှိမဖြစ်လိုအပ်တဲ့စုံစမ်းမှုတစ်ခုကိုမလိုအပ်ပါ ။ ၎င်း၏အဓိကအချိန်စားသုံးမှုမှလာ:
ကွန်ယက် latency (client-server ဆက်သွယ်ရေး)
ကြီးမားသောဒေတာပမာဏ (ရလဒ်အစုသည်ကြီးမားသည့်အခါမှတ်ဉာဏ်ကိုလောင်လိမ့်မည်)
မရှိမဖြစ်လိုအပ်သောပြုပြင်ထုတ်လုပ်မှု (မပြောင်းလဲသောရလဒ်များ) သည်သန့်ရှင်းရေးပြုလုပ်ရန်လိုအပ်သည်)
ထို့ကြောင့်သင်၏မေးမြန်းမှုကိုယ်နှိုက်သည်အစာရှောင်ပြီးပါက နောက်တစ်ခေါက် () ကိုခေါ်ဆိုမှုသည်အရေးမကြီးပါ။ အကယ်. စုံစမ်းမှုသည်အချက်အလက်အမြောက်အများကိုထုတ်လုပ်ပါကရလဒ်အနေဖြင့်ရလဒ်တစ်ခုစီသည်ယခင်ရလဒ်ကိုထပ်ခါထပ်ခါခွဲထုတ်ရန်လိုအပ်ကြောင်းဆိုလိုသည်။
ကျွန်ုပ်တို့သည်အောက်ပါတို့အားအောက်ပါ 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 () ဟုမခေါ်ပါကပိုမိုမြန်ဆန်လိမ့်မည်။ သို့သော်သင်ဤအချက်အလက်များကိုရယူရန်လိုအပ်သရွေ့၎င်းသည်မရှိမဖြစ်လိုအပ်သည်။
ဖော်ပြချက်တစ်ခု၏စုံစမ်းမှုရလဒ်ကိုသင်သာလိုအပ်လျှင် Multi_Query () ကိုအသုံးပြုခြင်းကိုရှောင်ရန်ကြိုးစားပါ။
// ပိုပြီးအကြံပြုလမ်း
$result = $conn->query("SELECT * FROM users");
Multi_query () ကိုအသုံးပြုသောအခါ, ဥပမာအားဖြင့်လိုအပ်သောအကွက်များကိုသာရွေးချယ်ပါသို့မဟုတ်နံပါတ်ကိုကန့်သတ်ရန်က န့်သတ်ချက်ကို သုံးပါ။
SELECT id, name FROM users LIMIT 100;
Store_Result ( ) ကို Call _Result () () အခမဲ့ () အခမဲ့ () အခမဲ့ () () အခမဲ့ () ကိုခေါ်ရန်သေချာသည်, အထူးသဖြင့်ကွင်းဆက်များတွင်အသုံးပြုသောအခါ။
Next_result () သူ့ဟာသူသည် "စုံစမ်းမှုကိုနှေးကွေးစေ" မဟုတ်, ၎င်းသည်လုပ်ငန်းစဉ်၏အစိတ်အပိုင်းတစ်ခုသာဖြစ်သည်။
အမြန်နှုန်းကိုအမှန်တကယ်အကျိုးသက်ရောက်စေသောအရာသည်အချက်အလက်ပမာဏဖြစ်ပြီးသင်အမှန်တကယ်ရလဒ်အားလုံးကိုလိုအပ်ပါသလား။
သင်တစ် ဦး စုံစမ်းမှုတစ်ခုသာလိုအပ်ပါက multi_query () ကို ရှောင်ပါ။
ရလဒ်မျိုးစုံပြုပြင်ထုတ်လုပ်မှုကိုလိုအပ်ပါက Next_result () သည်သင်၏ကောင်းကျိုးအတွက်ဖြစ်သည်။
ပိုမိုနက်ရှိုင်းသောစွမ်းဆောင်ရည်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အသေးစိတ်နှိုင်းယှဉ်ချက်ကို https:/gitbox.net/artet/artics/db-porformance တွင်အသေးစိတ်နှိုင်းယှဉ်ကြည့်ပါ။