ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

ကျလန်ုပ်တို့နဟင့်ရင်သနဟီသသော အပလီကေသရဟင်သမျာသအာသလုံသရဟိ ပုံမဟန်အခဌေအနေမျာသထဲမဟတစ်ခုမဟာ အချို့သောသတ်မဟတ်ချက်မျာသအတိုင်သ ဒေတာကိုရဟာဖလေပဌီသ ဖတ်ရလလယ်ကူသောပုံစံဖဌင့် ပဌသခဌင်သဖဌစ်သည်။ အမျိုသအစာသခလဲခဌင်သ၊ အုပ်စုဖလဲ့ခဌင်သနဟင့် စာမျက်နဟာတင်ခဌင်သအတလက် နောက်ထပ်ရလေသချယ်စရာမျာသလည်သ ရဟိနိုင်ပါသည်။ အလုပ်သည် သီအိုရီအရ အသေသအဖလဲဖဌစ်သော်လည်သ ၎င်သကိုဖဌေရဟင်သသောအခါတလင် developer အမျာသအပဌာသသည် အမဟာသမျာသစလာပဌုလုပ်ကဌပဌီသ နောက်ပိုင်သတလင် ကုန်ထုတ်စလမ်သအာသကို ထိခိုက်စေသည်။ ကပဌဿနာကိုဖဌေရဟင်သရန် အမျိုသမျိုသသောရလေသချယ်စရာမျာသကို စဉ်သစာသပဌီသ အထိရောက်ဆုံသအကောင်အထည်ဖော်မဟုကို ရလေသချယ်ရန်အတလက် အကဌံပဌုချက်မျာသကို ရေသဆလဲကဌပါစို့။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

စာမျက်နဟာရလေသချယ်မဟု နံပါတ် ၁

အရိုသရဟင်သဆုံသရလေသချယ်မဟုမဟာ ၎င်သ၏ဂန္ထဝင်ပုံစံဖဌင့် ရဟာဖလေမဟုရလဒ်မျာသကို တစ်မျက်နဟာချင်သ တစ်မျက်နဟာချင်သပဌသခဌင်သဖဌစ်သည်။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ
သင့်အပလီကေသရဟင်သသည် ဆက်စပ်ဒေတာဘေ့စ်ကို အသုံသပဌုသည်ဆိုပါစို့။ ကကိစ္စတလင်၊ ကဖောင်တလင် အချက်အလက်ပဌသရန်၊ သင်သည် SQL queries နဟစ်ခုကို လုပ်ဆောင်ရန် လိုအပ်သည်-

  • လက်ရဟိစာမျက်နဟာအတလက် အတန်သမျာသရယူပါ။
  • ရဟာဖလေမဟုစံနဟုန်သမျာသနဟင့် သက်ဆိုင်သည့် စာကဌောင်သစုစုပေါင်သကို တလက်ချက်ပါ - ၎င်သသည် စာမျက်နဟာမျာသကို ပဌသရန် လိုအပ်သည်။

နမူနာအနေနဲ့ MS SQL ဒေတာဘေ့စ်ကို စမ်သသပ်အသုံသပဌုထာသတဲ့ ပထမဆုံသမေသခလန်သကို ကဌည့်ရအောင် ကံကဌမ္မာ 2016 ဆာဗာအတလက်။ ကရည်ရလယ်ချက်အတလက် ကျလန်ုပ်တို့သည် Sales.SalesOrderHeader ဇယာသကို အသုံသပဌုပါမည်။

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

အထက်ဖော်ပဌပါ မေသမဌန်သချက်သည် စာရင်သမဟ ပထမဆုံသ အမဟာစာ 50 ကို ထပ်မံ၍ ကဌီသစဉ်ငယ်လိုက် ရက်စလဲဖဌင့် စီထာသသည်၊ တစ်နည်သအာသဖဌင့်၊ လတ်တလော အမဟာစာ 50 ကို ပဌန်ပေသပါမည်။

၎င်သသည် စမ်သသပ်မဟုအခဌေခံတလင် လျင်မဌန်စလာလည်ပတ်နေသော်လည်သ အကောင်အထည်ဖော်မဟုအစီအစဉ်နဟင့် I/O ကိန်သဂဏန်သမျာသကို ကဌည့်ကဌပါစို့။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

query runtime တလင် SET STATISTICS IO ON command ကို run ခဌင်သဖဌင့် query တစ်ခုစီအတလက် I/O ကိန်သဂဏန်သအချက်အလက်မျာသကို သင် ရယူနိုင်ပါသည်။

အကောင်အထည်ဖော်မဟု အစီအစဉ်မဟ သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ အရင်သအမဌစ်-အမျာသဆုံသ ရလေသချယ်မဟုမဟာ ရင်သမဌစ်ဇယာသ၏ အတန်သအာသလုံသကို ထည့်သလင်သထာသသော ရက်စလဲအလိုက် စီရန်ဖဌစ်သည်။ ပဌဿနာမဟာ ဇယာသတလင် အတန်သမျာသမျာသလေလေ၊ စီရန် "ပိုခက်" လာလေဖဌစ်သည်။ လက်တလေ့တလင်၊ ထိုသို့သောအခဌေအနေမျာသကို ရဟောင်ရဟာသသင့်သည်၊ ထို့ကဌောင့် ထပ်လောင်သရက်စလဲတလင် အညလဟန်သတစ်ခုထည့်ကာ အရင်သအမဌစ်သုံသစလဲမဟု ပဌောင်သလဲသလာသခဌင်သရဟိမရဟိ ကဌည့်ကဌပါစို့။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ပိုကောင်သလာတာ သိသာပါတယ်။ ဒါပေမယ့် ပဌဿနာအာသလုံသကို ဖဌေရဟင်သပဌီသပဌီလာသ။ ကုန်ပစ္စည်သစုစုပေါင်သ $100 ထက်ကျော်လလန်သော မဟာယူမဟုမျာသကို ရဟာဖလေရန် စုံစမ်သမေသမဌန်သချက်ကို ပဌောင်သလဲကဌပါစို့။

SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ကျလန်ုပ်တို့တလင် ရယ်စရာကောင်သသော အခဌေအနေတစ်ခုရဟိသည်- မေသမဌန်သမဟုအစီအစဉ်သည် ယခင်ပုံစံထက် မျာသစလာဆိုသရလာသခဌင်သမရဟိသော်လည်သ အမဟန်တကယ် ယုတ္တိဖတ်သည့်အရေအတလက်သည် စာသပလဲအပဌည့်စကင်ဖတ်ခဌင်သထက် နဟစ်ဆနီသပါသ ကဌီသမာသပါသည်။ ထလက်လမ်သတစ်ခုရဟိသည် - ကျလန်ုပ်တို့သည် ရဟိပဌီသသာသအညလဟန်သကိန်သတစ်ခုမဟပေါင်သစပ်အညလဟန်သတစ်ခုပဌုလုပ်ပဌီသ ဒုတိယအကလက်အဖဌစ် ကုန်ပစ္စည်သစုစုပေါင်သစျေသနဟုန်သကို ပေါင်သထည့်ပါက၊ ကျလန်ုပ်တို့သည် ယုတ္တိနည်သစာဖတ်ခဌင်သ 165 ခုကို ထပ်မံရရဟိမည်ဖဌစ်ပါသည်။

CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);

ကနမူနာမျာသကို အချိန်အကဌာကဌီသ ဆက်လက်လုပ်ဆောင်နိုင်သော်လည်သ ကနေရာတလင် ကျလန်ုပ်ဖော်ပဌလိုသော အဓိက အတလေသနဟစ်ခုမဟာ-

  • ရဟာဖလေမဟုတစ်ခုတလင် စံသတ်မဟတ်ချက်အသစ် သို့မဟုတ် အမျိုသအစာသခလဲသည့် အစီအစဉ်ကို ပေါင်သထည့်ခဌင်သသည် ရဟာဖလေမဟု၏အမဌန်နဟုန်သအပေါ် သိသာထင်ရဟာသသောအကျိုသသက်ရောက်မဟုရဟိနိုင်သည်။
  • သို့သော် ကျလန်ုပ်တို့သည် ဒေတာ၏ တစ်စိတ်တစ်ပိုင်သကိုသာ နုတ်ရန် လိုအပ်ပဌီသ ရဟာဖလေမဟု ဝေါဟာရမျာသနဟင့် ကိုက်ညီသော ရလဒ်မျာသအာသလုံသမဟုတ်ပါက၊ ထိုသို့သော မေသခလန်သကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ရန် နည်သလမ်သမျာသစလာ ရဟိပါသည်။

ယခု အစတလင်ဖော်ပဌထာသသော ဒုတိယမေသခလန်သသို့ ဆက်သလာသကဌပါစို့ - ရဟာဖလေမဟုစံနဟုန်သကို ကျေနပ်စေမည့် မဟတ်တမ်သအရေအတလက်ကို ရေတလက်သည့်တစ်ခု။ တူညီသော ဥပမာကို ကဌည့်ကဌပါစို့ - $100 ထက်ပိုသော မဟာယူမဟုမျာသကို ရဟာဖလေခဌင်သ-

SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100

အထက်တလင်ဖော်ပဌထာသသော ပေါင်သစပ်အညလဟန်သကို ပေသ၍ ကျလန်ုပ်တို့ ရရဟိသည်-

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SubTotal အကလက်သည် ပထမအနေအထာသတလင်မရဟိသောကဌောင့် query သည် အညလဟန်သတစ်ခုလုံသကိုဖဌတ်သလာသသည်ဟူသောအချက်မဟာ အံ့သဌစရာမဟုတ်ပေ။ SubTotal အကလက်တလင် အခဌာသသော အညလဟန်သမျာသကို ပေါင်သထည့်ခဌင်သဖဌင့် ပဌဿနာကို ဖဌေရဟင်သနိုင်ပဌီသ ရလဒ်အနေဖဌင့် ၎င်သသည် ယုတ္တိ ၄၈ ခုသာ ဖတ်ရဟုနိုင်မည်ဖဌစ်သည်။

ပမာဏရေတလက်ရန် တောင်သဆိုမဟုမျာသ၏ နောက်ထပ်ဥပမာအနည်သငယ်ကို သင်ပေသနိုင်သော်လည်သ အနဟစ်သာရမဟာ အတူတူပင်ဖဌစ်သည်- ဒေတာအပိုင်သအစကို လက်ခံရရဟိခဌင်သနဟင့် စုစုပေါင်သပမာဏကို ရေတလက်ခဌင်သမဟာ အခဌေခံအာသဖဌင့် မတူညီသော တောင်သဆိုမဟုနဟစ်ခုဖဌစ်သည်။နဟင့် တစ်ခုစီသည် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ရန်အတလက် ၎င်သ၏ကိုယ်ပိုင်အစီအမံမျာသ လိုအပ်သည်။ ယေဘူယျအာသဖဌင့်၊ မေသခလန်သနဟစ်ခုလုံသအတလက် အညီအမျဟ ကောင်သစလာအလုပ်လုပ်နိုင်သော အညလဟန်သကိန်သမျာသ ပေါင်သစပ်မဟုကို သင်ရဟာတလေ့နိုင်မည်မဟုတ်ပါ။

ထို့ကဌောင့်၊ ထိုသို့သောရဟာဖလေမဟုဖဌေရဟင်သချက်ကို ဖော်ထုတ်ရာတလင် ရဟင်သလင်သသင့်သော အရေသကဌီသသောလိုအပ်ချက်မျာသထဲမဟတစ်ခုမဟာ တလေ့ရဟိသည့်အရာဝတ္ထုအရေအတလက်ကို ကဌည့်ရဟုရန် လုပ်ငန်သတစ်ခုအတလက် အမဟန်တကယ်အရေသကဌီသသည်ရဟိ၊ မဟုတ်တာ မကဌာခဏ ဖဌစ်တတ်ပါတယ်။ စာမျက်နဟာနံပါတ်မျာသအလိုက် လမ်သကဌောင်သပဌခဌင်သသည် အလလန်ကျဉ်သမဌောင်သသော နယ်ပယ်တစ်ခုဖဌစ်သည့် ဖဌေရဟင်သချက်တစ်ခုဖဌစ်ပဌီသ၊ စာမျက်နဟာအမျာသစုသည် “နောက်စာမျက်နဟာသို့ သလာသပါ” နဟင့်တူသောကဌောင့် ဖဌစ်သည်။

စာမျက်နဟာရလေသချယ်မဟု နံပါတ် ၁

တလေ့ရဟိသည့်အရာဝတ္ထုစုစုပေါင်သအရေအတလက်ကို သုံသစလဲသူမျာသက ဂရုမစိုက်ကဌောင်သ ယူဆကဌပါစို့။ ရဟာဖလေမဟုစာမျက်နဟာကို ရိုသရဟင်သအောင် ကဌိုသစာသကဌပါစို့။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ
အမဟန်မဟာ၊ ပဌောင်သလဲသလာသသော တစ်ခုတည်သသောအရာမဟာ သတ်မဟတ်ထာသသော စာမျက်နဟာနံပါတ်မျာသသို့ သလာသလာရန် နည်သလမ်သမရဟိတော့ဘဲ၊ ယခုဇယာသသည် ၎င်သကိုပဌသရန်အတလက် မည်မျဟရဟိနိုင်သည်ကို သိရဟိရန်မလိုအပ်တော့ပါ။ သို့သော်မေသခလန်သပေါ်လာသည် - နောက်စာမျက်နဟာအတလက်ဒေတာရဟိမရဟိ (“Next” link ကိုမဟန်ကန်စလာပဌသရန်အတလက်) ဇယာသသည်မည်သို့သိသနည်သ။

အဖဌေသည် အလလန်ရိုသရဟင်သပါသည်- ဖော်ပဌရန်အတလက် လိုအပ်သည်ထက် ပိုမိုသော မဟတ်တမ်သတစ်ခုကို ဒေတာဘေ့စ်မဟ သင်ဖတ်ရဟုနိုင်ပဌီသ၊ က “အပိုဆောင်သ” မဟတ်တမ်သ၏ ပါဝင်မဟုသည် နောက်အပိုင်သတစ်ခုရဟိမရဟိကို ပဌသမည်ဖဌစ်သည်။ ကနည်သအာသဖဌင့်၊ ဒေတာစာမျက်နဟာတစ်မျက်နဟာကို ရရဟိရန် တောင်သဆိုချက်တစ်ခုသာ လုပ်ဆောင်ရန် လိုအပ်ပဌီသ ၎င်သသည် စလမ်သဆောင်ရည်ကို သိသိသာသာ တိုသတက်စေပဌီသ ယင်သကဲ့သို့သော လုပ်ဆောင်ချက်မျာသကို ပံ့ပိုသရန် ပိုမိုလလယ်ကူစေသည်။ ကျလန်ုပ်၏လက်တလေ့တလင်၊ စုစုပေါင်သမဟတ်တမ်သအရေအတလက်ကိုရေတလက်ရန်ငဌင်သဆိုသောအခါရလဒ်မျာသပေသပို့မဟုကို 4-5 ကဌိမ်မဌန်ဆန်စေသည်။

ကချဉ်သကပ်မဟုအတလက် အသုံသပဌုသူကဌာသခံရလေသချယ်စရာအမျာသအပဌာသရဟိသည်- အထက်နမူနာတလင်ကဲ့သို့ "back" နဟင့် "forward" commands၊ ပဌသထာသသောရလဒ်မျာသတလင် အပိုင်သအသစ်တစ်ခုကို ရိုသရိုသရဟင်သရဟင်သထည့်သလင်သပေသသည့် "load more" ခလုတ်တစ်ခု၊ အလုပ်လုပ်သော "အဆုံသမရဟိ scroll"၊ "load more" "၏နိယာမတလင်၊ သို့သော်နောက်အပိုင်သကိုရရဟိရန်အချက်ပဌမဟုသည်အသုံသပဌုသူမဟပဌသထာသသောရလဒ်အာသလုံသကိုအဆုံသအထိရလဟေ့ရန်ဖဌစ်သည်။ အမဌင်အာရုံဖဌေရဟင်သနည်သ မည်သို့ပင်ဖဌစ်စေ ဒေတာနမူနာယူခဌင်သနိယာမသည် အတူတူပင်ဖဌစ်သည်။

စာမျက်နဟာအကောင်အထည်ဖော်ခဌင်သ၏ ကလဲပဌာသချက်မျာသ

အထက်ဖော်ပဌပါ စုံစမ်သမဟုနမူနာမျာသအာသလုံသသည် ရလဒ်အတန်သမျာသနဟင့် အတန်သမည်မျဟပဌန်ရရန် လိုအပ်ကဌောင်သ စုံစမ်သမဟုကိုယ်တိုင်က သတ်မဟတ်သောအခါတလင် "အော့ဖ်ဆက် + ရေတလက်ခဌင်သ" ချဉ်သကပ်မဟုကို အသုံသပဌုသည်။ ပထမညသစလာ၊ ကကိစ္စတလင် parameter passing ကိုမည်ကဲ့သို့စုစည်သရန်အကောင်သဆုံသဖဌစ်သည်ကိုကဌည့်ကဌပါစို့။ လက်တလေ့တလင်၊ ကျလန်ုပ်သည် နည်သလမ်သမျာသစလာကို တလေ့ခဲ့ရပါသည်။

  • တောင်သဆိုထာသသောစာမျက်နဟာ (pageIndex)၊ စာမျက်နဟာအရလယ်အစာသ (pageSize) ၏ အမဟတ်စဉ်နံပါတ်။
  • ပဌန်ပေသမည့် ပထမဆုံသမဟတ်တမ်သ၏ အမဟတ်စဉ်နံပါတ် (startIndex)၊ ရလဒ် (ရေတလက်မဟု) တလင် အမျာသဆုံသ မဟတ်တမ်သအရေအတလက်။
  • ပဌန်ပေသမည့် ပထမမဟတ်တမ်သ၏ နံပါတ်စဉ် (startIndex)၊ ပဌန်ပေသမည့် နောက်ဆုံသမဟတ်တမ်သ၏ နံပါတ်စဉ် (endIndex)။

ပထမတစ်ချက်တလင်၊ ကအရာသည် မူလတန်သဖဌစ်ပဌီသ ကလာခဌာသမဟုမရဟိဟု ထင်ရပေမည်။ ဒါပေမယ့် ဒါက မဟုတ်ပါဘူသ - အဆင်ပဌေဆုံသနဲ့ universal option က ဒုတိယ (startIndex၊ count) ဖဌစ်ပါတယ်။ ကအတလက် အကဌောင်သရင်သမျာသစလာ ရဟိပါသည်။

  • အထက်တလင်ဖော်ပဌထာသသော +1 ဝင်ခလင့်အထောက်အထာသဖတ်ခဌင်သနည်သလမ်သအတလက်၊ pageIndex နဟင့် pageSize ပါသော ပထမရလေသချယ်မဟုသည် အလလန်အဆင်မပဌေပါ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် စာမျက်နဟာတစ်ခုလျဟင် ပို့စ် ၅၀ ကို ပဌသလိုပါသည်။ အထက်ဖော်ပဌပါ algorithm အရ၊ လိုအပ်သည်ထက် မဟတ်တမ်သတစ်ခု ထပ်မံဖတ်ရန် လိုအပ်သည်။ က “+50” ကို ဆာဗာတလင် အကောင်အထည်မဖော်ပါက ပထမစာမျက်နဟာအတလက် 1 မဟ 1 မဟ မဟတ်တမ်သမျာသကို ကျလန်ုပ်တို့ တောင်သဆိုရမည်ဖဌစ်ပဌီသ ဒုတိယစာမျက်နဟာ - 51 မဟ 51 စသည်တို့အတလက် မဟတ်တမ်သမျာသကို တောင်သဆိုရမည်ဖဌစ်သည်။ စာမျက်နဟာ 101 ကို သတ်မဟတ်ပဌီသ စာမျက်နဟာအညလဟန်သကို တိုသပါက ဒုတိယစာမျက်နဟာ 51 မဟ 52 သို့ ပဌန်သလာသပါမည်။ ထို့ကဌောင့်၊ ပထမရလေသချယ်မဟုတလင်၊ နောက်စာမျက်နဟာသို့သလာသရန် ခလုတ်တစ်ခုကို မဟန်ကန်စလာအကောင်အထည်ဖော်ရန် တစ်ခုတည်သသောနည်သလမ်သမဟာ ဆာဗာမဟ “အပို” မျဉ်သကဌောင်သကို စစ်ကဌောရန်ဖဌစ်သည်၊၊ အလလန်အကျုံသဝင်သော ကလဲပဌာသမဟုဖဌစ်လိမ့်မည်။
  • ဒေတာဘေ့စ်အမျာသစုတလင် စုံစမ်သမေသမဌန်သမဟုမျာသကို လုပ်ဆောင်ရန် တတိယရလေသချယ်မဟုမဟာ အဓိပ္ပါယ်လုံသဝမရဟိပါ၊ အဘယ်ကဌောင့်ဆိုသော် သင်သည် နောက်ဆုံသမဟတ်တမ်သ၏ အညလဟန်သကိန်သထက် အရေအတလက်ကို ကျော်သလာသရန်လိုအပ်ပါသည်။ endIndex မဟ startIndex ကို နုတ်ခဌင်သသည် ရိုသရဟင်သသော ဂဏန်သသင်္ချာ လုပ်ဆောင်ချက် ဖဌစ်ကောင်သဖဌစ်နိုင်သော်လည်သ ၎င်သသည် ကနေရာတလင် လလန်စလာ မလိုအပ်ပါ။

ယခုကျလန်ုပ်တို့သည် “offset + quantity” ဖဌင့် pageaging ကိုအကောင်အထည်ဖော်ခဌင်သ၏အာသနည်သချက်မျာသကိုဖော်ပဌသင့်သည်-

  • နောက်ဆက်တလဲစာမျက်နဟာတစ်ခုစီကို ပဌန်လည်ရယူခဌင်သသည် ယခင်စာမျက်နဟာထက် ပိုမိုစျေသကဌီသပဌီသ နဟေသကလေသမည်ဖဌစ်သောကဌောင့် ဒေတာဘေ့စ်သည် ရဟာဖလေခဌင်သနဟင့် စီခဌင်သသတ်မဟတ်ချက်မျာသနဟင့်အညီ "အစမဟ" မဟတ်တမ်သအာသလုံသကို "အစမဟ" ဖဌတ်သန်သရန် လိုအပ်နေသေသသောကဌောင့်၊ ထို့နောက် လိုချင်သောအပိုင်သအစတလင် ရပ်သလာသမည်ဖဌစ်သည်။
  • DBMS အာသလုံသသည် ကနည်သလမ်သကို ပံ့ပိုသမပေသနိုင်ပါ။

အခဌာသရလေသချယ်စရာမျာသ ရဟိသော်လည်သ ၎င်သတို့သည်လည်သ မစုံလင်ပါ။ ကချဉ်သကပ်နည်သမျာသထဲမဟ ပထမဆုံသနည်သလမ်သကို “keyset paging” သို့မဟုတ် “seek method” ဟုခေါ်ပဌီသ အောက်ပါအတိုင်သဖဌစ်သည်- အပိုင်သတစ်ခုကို လက်ခံရရဟိပဌီသနောက်၊ စာမျက်နဟာရဟိ နောက်ဆုံသမဟတ်တမ်သရဟိ နယ်ပယ်တန်ဖိုသမျာသကို သင်မဟတ်မိနိုင်ပဌီသ ရယူရန် ၎င်သတို့ကို အသုံသပဌုပါ။ နောက်အပိုင်သ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် အောက်ပါမေသခလန်သကို လုပ်ဆောင်ခဲ့သည်-

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

နောက်ဆုံသမဟတ်တမ်သတလင် ကျလန်ုပ်တို့သည် အမဟာစာရက်စလဲတန်ဖိုသ '2014-06-29' ကိုရရဟိသည်။ ထို့နောက် နောက်စာမျက်နဟာကိုရရန် သင်ကသို့ကဌိုသစာသနိုင်သည်-

SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

ပဌဿနာမဟာ OrderDate သည် သီသသန့်မဟုတ်သော အကလက်ဖဌစ်ပဌီသ အထက်ဖော်ပဌပါအခဌေအနေသည် လိုအပ်သောအတန်သမျာသစလာကို လလတ်သလာသဖလယ်ရဟိသည်။ ကမေသခလန်သအတလက် ရဟင်သရဟင်သလင်သလင်သမရဟိအောင် ထည့်ရန်၊ အခဌေအနေတလင် သီသသန့်အကလက်တစ်ခုကို သင်ထည့်ရန်လိုအပ်သည် (75074 သည် ပထမအပိုင်သမဟ အဓိကသော့၏ နောက်ဆုံသတန်ဖိုသဖဌစ်သည်ဟု ယူဆသည်)။

SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
   OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

ကရလေသချယ်မဟုသည် မဟန်ကန်စလာအလုပ်လုပ်နိုင်သော်လည်သ အခဌေအနေတလင် OR အော်ပရေတာတစ်ခုပါရဟိသည်ဖဌစ်သောကဌောင့် ယေဘုယျအာသဖဌင့် ၎င်သသည် အကောင်သဆုံသဖဌစ်အောင်ပဌုလုပ်ရန် ခက်ခဲပါလိမ့်မည်။ OrderDate တိုသလာသည်နဟင့်အမျဟ ပင်မသော့တန်ဖိုသ တိုသလာပါက၊ SalesOrderID မဟ စစ်ထုတ်မဟုတစ်ခုသာ ချန်ထာသခဌင်သဖဌင့် အခဌေအနေ ရိုသရဟင်သနိုင်ပါသည်။ သို့သော် ရလဒ်ကို စီစဥ်ထာသသည့် အကလက်မျာသ၏ တန်ဖိုသမျာသနဟင့် ပင်မသော့တန်ဖိုသမျာသကဌာသ တင်သကျပ်သော ဆက်စပ်မဟုမရဟိပါက၊ က OR ကို DBMS အမျာသစုတလင် ရဟောင်ရဟာသ၍မရပါ။ ကျလန်တော်သိသော ခဌလင်သချက်မဟာ Tuple နဟိုင်သယဟဉ်မဟုမျာသကို အပဌည့်အဝထောက်ခံသည့် PostgreSQL ဖဌစ်ပဌီသ အထက်ပါအခဌေအနေအာသ "WHERE (OrderDate, SalesOrderID) < ('2014-06-29', 75074)" ဟု ရေသသာသနိုင်ပါသည်။ ကအကလက်နဟစ်ခုပါသော ပေါင်သစပ်သော့ကို ပေသထာသသည့်အတလက်၊ ကကဲ့သို့သော မေသမဌန်သချက်သည် အတော်လေသ လလယ်ကူသင့်သည်။

ဥပမာ၊ တလင်၊ ဒုတိယနည်သကို ရဟာနိုင်သည်။ ElasticSearch scroll API သို့မဟုတ် Cosmos DB — တောင်သဆိုမဟုတစ်ခုသည် ဒေတာအပဌင် သင်ဒေတာ၏နောက်အပိုင်သကိုရနိုင်သည့် အထူသသတ်မဟတ်သူအာသ ပဌန်ပေသသည်။ အကယ်၍ ကသတ်မဟတ်သူသည် အကန့်အသတ်မရဟိသော သက်တမ်သတစ်ခု (Comsos DB တလင်ကဲ့သို့) ရဟိပါက၊ ၎င်သသည် စာမျက်နဟာမျာသအကဌာသ ဆက်တိုက်အကူသအပဌောင်သဖဌင့် စာမျက်နဟာမျာသကို အကောင်အထည်ဖော်ရန် နည်သလမ်သကောင်သတစ်ခုဖဌစ်သည် (အထက်ဖော်ပဌပါ ရလေသချယ်မဟု #2)။ ၎င်သ၏ဖဌစ်နိုင်သောအာသနည်သချက်မျာသ- DBMSs အာသလုံသတလင် ပံ့ပိုသမထာသပါ။ ထလက်ပေါ်လာသော နောက်အပိုင်သအမဟတ်အသာသသည် အကန့်အသတ်ရဟိသော သက်တမ်သရဟိနိုင်သည်၊ ၎င်သသည် ယေဘုယျအာသဖဌင့် အသုံသပဌုသူ အပဌန်အလဟန်တုံ့ပဌန်မဟုအတလက် မသင့်လျော်ပါ (ElasticSearch scroll API ကဲ့သို့သော)။

ရဟုပ်ထလေသသောစစ်ထုတ်ခဌင်သ။

လုပ်ငန်သကို ရဟုပ်ထလေသအောင် လုပ်ကဌရအောင်။ အလန်လိုင်သစတိုသမျာသမဟလူတိုင်သနဟင့်အလလန်ရင်သနဟီသသော faceted search ဟုခေါ်တလင်အကောင်အထည်ဖော်ရန်လိုအပ်သည်ဆိုပါစို့။ အမဟာစာဇယာသအပေါ်အခဌေခံထာသသော အထက်ဖော်ပဌပါ ဥပမာမျာသသည် ကကိစ္စတလင် သရုပ်ဖော်ပုံသိပ်မလဟပါ၊ ထို့ကဌောင့် AdventureWorks ဒေတာဘေ့စ်မဟ ထုတ်ကုန်ဇယာသသို့ ပဌောင်သကဌည့်ကဌပါစို့။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ
မျက်နဟာချင်သဆိုင်ရဟာဖလေမဟုနောက်ကလယ်က အယူအဆကဘာလဲ။ အမဟန်မဟာ စစ်ထုတ်သည့်ဒဌပ်စင်တစ်ခုစီအတလက် ကစံသတ်မဟတ်ချက်မျာသနဟင့် ကိုက်ညီသော မဟတ်တမ်သအရေအတလက်ကို ပဌသထာသသည်။ အခဌာသအမျိုသအစာသအာသလုံသတလင် ရလေသချယ်ထာသသော စစ်ထုတ်မဟုမျာသကို ထည့်သလင်သစဉ်သစာသပါ။.

ဥပမာအာသဖဌင့်၊ ကဥပမာရဟိ စက်ဘီသအမျိုသအစာသနဟင့် အရောင်အနက်ရောင်ကို ရလေသချယ်ပါက၊ ဇယာသသည် အနက်ရောင်စက်ဘီသမျာသကိုသာ ပဌသမည်ဖဌစ်သော်လည်သ၊

  • အမျိုသအစာသအုပ်စုရဟိ စံသတ်မဟတ်ချက်တစ်ခုစီအတလက်၊ ထိုအမျိုသအစာသမဟ ထုတ်ကုန်အရေအတလက်ကို အနက်ရောင်ဖဌင့် ပဌသပါမည်။
  • "အရောင်မျာသ" အဖလဲ့၏ စံသတ်မဟတ်ချက်တစ်ခုစီအတလက်၊ ကအရောင်၏ စက်ဘီသအရေအတလက်ကို ပဌသပါမည်။

ကသည်မဟာ ထိုသို့သောအခဌေအနေမျာသအတလက် ရလဒ်ရလဒ်၏ ဥပမာတစ်ခုဖဌစ်သည်။

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ
“အဝတ်အစာသ” အမျိုသအစာသကိုလည်သ စစ်ဆေသပါက၊ စာသပလဲတလင် လက်ကျန်ရဟိနေသည့် အနက်ရောင်အဝတ်အစာသမျာသကိုလည်သ ပဌသမည်ဖဌစ်သည်။ "အရောင်" ကဏ္ဍရဟိ အနက်ရောင်ထုတ်ကုန်အရေအတလက်ကိုလည်သ အခဌေအနေအသစ်အရ ပဌန်လည်တလက်ချက်မည်ဖဌစ်ပဌီသ၊ "အမျိုသအစာသမျာသ" ကဏ္ဍတလင်သာ ပဌောင်သလဲမည်မဟုတ်ပါ... ကဥပမာမျာသသည် ပုံမဟန်မျက်နဟာသလင်ပဌင်ရဟာဖလေမဟု algorithm ကို နာသလည်ရန် လုံလောက်မည်ဟု မျဟော်လင့်ပါသည်။

အခု ဒီဟာကို ဆက်စပ်အခဌေခံပေါ်မဟာ ဘယ်လိုအကောင်အထည်ဖော်နိုင်မလဲဆိုတာ တလေသကဌည့်ရအောင်။ အမျိုသအစာသနဟင့် အရောင်ကဲ့သို့သော စံအုပ်စုတစ်ခုစီသည် သီသခဌာသမေသမဌန်သမဟုတစ်ခု လိုအပ်ပါမည်-

SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
  INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ

SELECT Color, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC

ရဟာဖလေမဟုရလဒ်မျာသထလက်ရဟိမဟုနဟင့် စလမ်သဆောင်ရည်ပဌဿနာမျာသ
ဒီဖဌေရဟင်သချက်က ဘာမဟာသနေလဲ။ အလလန်ရိုသရဟင်သပါသည် - ကောင်သစလာမတိုင်သတာပါ။ စစ်ထုတ်မဟုအပိုင်သတစ်ခုစီတိုင်သသည် ပမာဏမျာသကိုတလက်ချက်ရန် သီသခဌာသမေသမဌန်သချက်တစ်ခု လိုအပ်ပဌီသ ကမေသခလန်သမျာသသည် အလလယ်ကူဆုံသမဟုတ်ပါ။ အလန်လိုင်သစတိုသမျာသတလင်၊ အချို့သောအမျိုသအစာသမျာသသည် ပဌင်သထန်သောစလမ်သဆောင်ရည်ပဌဿနာတစ်ခုဖဌစ်နိုင်သည့် ဒါဇင်မျာသစလာသော စစ်ထုတ်မဟုအပိုင်သမျာသပါရဟိသည်။

အမျာသအာသဖဌင့် ကဖော်ပဌချက်မျာသပဌီသနောက် ကျလန်ုပ်အာသ ဖဌေရဟင်သချက်အချို့ကို ကမ်သလဟမ်သခဲ့သည်၊ ဆိုလိုသည်မဟာ-

  • အရေအတလက်အာသလုံသကို query တစ်ခုတလင် ပေါင်သစပ်ပါ။ နည်သပညာအရ ၎င်သသည် UNION သော့ချက်စာလုံသကို အသုံသပဌု၍ ဖဌစ်နိုင်သော်လည်သ ၎င်သသည် စလမ်သဆောင်နိုင်မဟုကို မျာသစလာအထောက်အကူမပဌုနိုင် - ဒေတာဘေ့စ်သည် အပိုင်သအစတစ်ခုစီကို အစမဟအဆုံသအထိ လုပ်ဆောင်ရန် ကျန်ရဟိနေမည်ဖဌစ်သည်။
  • Cache ပမာဏမျာသ။ ပဌဿနာတစ်ခုကို ဖော်ပဌတိုင်သလိုလို ဒါကို အကဌံပဌုထာသပါတယ်။ သတိပေသချက်ကတော့ ဒါက ယေဘုယျအာသဖဌင့် မဖဌစ်နိုင်ပါဘူသ။ ကျလန်ုပ်တို့တလင် 10 "မျက်နဟာ" ရဟိသည်ဆိုပါစို့၊ တစ်ခုစီတလင် တန်ဖိုသ 5 ခုရဟိသည်။ ကသည်မဟာ တူညီသောအလန်လိုင်သစတိုသမျာသတလင် မဌင်တလေ့နိုင်သည့်အရာမျာသနဟင့် နဟိုင်သယဟဉ်ပါက အလလန် "ကျိုသနလံသော" အခဌေအနေဖဌစ်သည်။ အသလင်အပဌင်တစ်ခုစီ၏ ရလေသချယ်မဟုသည် အခဌာသ ၉ ပါသရဟိ ပမာဏမျာသအပေါ် သက်ရောက်သည်၊ တစ်နည်သအာသဖဌင့် သတ်မဟတ်ချက်တစ်ခုစီအတလက် ပမာဏသည် ကလဲပဌာသနိုင်သည်။ ကျလန်ုပ်တို့၏နမူနာတလင်၊ အသုံသပဌုသူရလေသချယ်နိုင်သော စံသတ်မဟတ်ချက် စုစုပေါင်သ 9 ရဟိပဌီသ၊ ထို့ကဌောင့် ဖဌစ်နိုင်ချေ ပေါင်သစပ်မဟုမျာသ 50 ရဟိပါမည်။ ထိုကဲ့သို့သော ဒေတာခင်သကျင်သမဟုကို ဖဌည့်ရန် လုံလောက်သော memory သို့မဟုတ် အချိန်မရဟိပါ။ ကနေရာတလင် သင်ကန့်ကလက်နိုင်ပဌီသ ပေါင်သစပ်မဟုအာသလုံသသည် အစစ်အမဟန်မဟုတ်ကဌောင်သနဟင့် အသုံသပဌုသူသည် စံသတ်မဟတ်ချက် 250-5 ထက်ပို၍ ရလေသချယ်ခဲပါသည်။ ဟုတ်ကဲ့၊ ရလေသထာသဖူသတဲ့ ပမာဏကိုသာ ပျင်သရိစလာ တင်ပဌီသ ကက်ရဟ်လုပ်လို့ ရပါတယ်၊ ဒါပေမယ့် ရလေသချယ်မဟုတလေ မျာသလေလေ၊ ဒီလို ကက်ရဟ်ဟာ ထိရောက်မဟု နည်သလေလေ၊ တုံ့ပဌန်မဟု အချိန်ပဌဿ နာတလေ ပိုသိသာလေလေ (အထူသသဖဌင့် ဆိုရင်၊ ဒေတာအစုံကို ပုံမဟန်ပဌောင်သလဲခဌင်သ)။

ကံကောင်သထောက်မစလာ၊ ထိုပဌဿနာသည် ဒေတာပမာဏအမျာသအပဌာသတလင် ကဌိုတင်မဟန်သဆနိုင်သော ထိရောက်သော ဖဌေရဟင်သနည်သမျာသ ရဟိခဲ့သည်မဟာ ကဌာပါပဌီ။ ကရလေသချယ်စရာမျာသထဲမဟတစ်ခုအတလက်၊ မျက်နဟာစာ၏ပဌန်လည်တလက်ချက်မဟုနဟင့်ရလဒ်မျာသကိုလက်ခံခဌင်သစာမျက်နဟာကိုဆာဗာသို့အပဌိုင်ခေါ်ဆိုမဟုနဟစ်ခုအဖဌစ်အသလင်ပဌောင်သပဌီသ data မျာသကို facets ဖဌင့်တင်ခဌင်သအာသ "အနဟောင့်အယဟက်မပေသ" သည့်ပုံစံဖဌင့်အသုံသပဌုသူမျက်နဟာပဌင်ကိုစုစည်သရန်၎င်သသည်သဘောပေါက်သည်။ ရဟာဖလေမဟုရလဒ်မျာသ။

  • တတ်နိုင်သမျဟ ရဟာသရဟာသပါသပါသ "မျက်နဟာ" ၏ ပဌီသပဌည့်စုံသော တလက်ချက်မဟုကို ခေါ်ဆိုပါ။ ဥပမာအာသဖဌင့်၊ ရဟာဖလေမဟုစံနဟုန်သမျာသ ပဌောင်သလဲသည့်အခါတိုင်သ အရာအာသလုံသကို ပဌန်လည်တလက်ချက်ခဌင်သမပဌုပါနဟင့်၊ သို့သော် လက်ရဟိအခဌေအနေမျာသနဟင့် ကိုက်ညီသည့် စုစုပေါင်သရလဒ်မျာသကို ရဟာဖလေပဌီသ ၎င်သတို့အာသ ပဌသရန် သုံသစလဲသူအာသ နဟိုသဆော်ခဌင်သ - "1425 မဟတ်တမ်သမျာသ တလေ့ရဟိ၊ ပဌမည်" အသုံသပဌုသူသည် ရဟာဖလေမဟုအသုံသအနဟုန်သမျာသကို ဆက်လက်ပဌောင်သလဲနိုင်သည် သို့မဟုတ် “ပဌသရန်” ခလုတ်ကို နဟိပ်နိုင်သည်။ ဒုတိယကိစ္စတလင်သာ ရလဒ်မျာသရယူခဌင်သနဟင့် "မျက်နဟာစာမျာသ" အာသလုံသရဟိ ပမာဏမျာသကို ပဌန်လည်တလက်ချက်ခဌင်သအတလက် တောင်သဆိုမဟုအာသလုံသကို လုပ်ဆောင်မည်ဖဌစ်သည်။ ကကိစ္စတလင်၊ သင်အလလယ်တကူမဌင်နိုင်သကဲ့သို့၊ စုစုပေါင်သရလဒ်မျာသနဟင့်၎င်သ၏အကောင်သဆုံသဖဌစ်အောင်ပဌုလုပ်ရန်တောင်သဆိုမဟုတစ်ခုနဟင့်သင်ဖဌေရဟင်သရလိမ့်မည်။ ကနည်သလမ်သကို အလန်လိုင်သစတိုသငယ်မျာသစလာတလင် တလေ့နိုင်သည်။ သိသာထင်ရဟာသသည်၊ ကသည်ကပဌဿနာအတလက် panacea မဟုတ်ပါ၊ သို့သော်ရိုသရဟင်သသောကိစ္စမျာသတလင်၎င်သသည်ကောင်သမလန်သောအပေသအယူတစ်ခုဖဌစ်သည်။
  • Solr၊ ElasticSearch၊ Sphinx နဟင့် အခဌာသအရာမျာသကဲ့သို့သော မျက်နဟာစာမျာသကို ရေတလက်ရန် ရဟာဖလေရေသအင်ဂျင်မျာသကို အသုံသပဌုပါ။ ၎င်သတို့အာသလုံသသည် "အသလင်အပဌင်မျာသ" ကိုတည်ဆောက်ရန် ဒီဇိုင်သထုတ်ထာသပဌီသ ပဌောင်သပဌန်အညလဟန်သကိန်သကဌောင့် ၎င်သကို ထိရောက်စလာလုပ်ဆောင်သည်။ ရဟာဖလေရေသအင်ဂျင်မျာသ အလုပ်လုပ်ပုံ၊ ထိုသို့သောကိစ္စမျာသတလင် ၎င်သတို့သည် ယေဘူယျရည်ရလယ်ချက် ဒေတာဘေ့စ်မျာသထက် အဘယ်ကဌောင့် ပိုမိုထိရောက်သနည်သ၊ မည်သို့သော အလေ့အကျင့်မျာသနဟင့် ချလတ်ယလင်သချက်မျာသ ရဟိနေသနည်သ - ကသည် သီသခဌာသဆောင်သပါသအတလက် ခေါင်သစဉ်ဖဌစ်သည်။ ကနေရာတလင် ကျလန်ုပ်သည် ရဟာဖလေရေသအင်ဂျင်သည် ပင်မဒေတာသိုလဟောင်မဟုအတလက် အစာသထိုသမရနိုင်သည့်အချက်ကို အာရုံစိုက်စေလိုသည်၊ ၎င်သကို ထပ်လောင်သအဖဌစ်အသုံသပဌုသည်- ရဟာဖလေမဟုအတလက်သက်ဆိုင်သည့် ပင်မဒေတာဘေ့စ်ရဟိ မည်သည့်ပဌောင်သလဲမဟုမဆို ရဟာဖလေရေသအညလဟန်သသို့ ထပ်တူပဌုပါသည်။ ရဟာဖလေရေသအင်ဂျင်သည် မျာသသောအာသဖဌင့် ရဟာဖလေရေသအင်ဂျင်နဟင့်သာ အပဌန်အလဟန် အကျိုသသက်ရောက်ပဌီသ ပင်မဒေတာဘေ့စ်ကို မဝင်ရောက်နိုင်ပေ။ ကနေရာတလင် အရေသကဌီသဆုံသအချက်တစ်ခုမဟာ ကထပ်တူကူသမဟုကို ယုံကဌည်စိတ်ချစလာ စုစည်သပုံဖဌစ်သည်။ ၎င်သသည် "တုံ့ပဌန်မဟုအချိန်" လိုအပ်ချက်မျာသပေါ်တလင်မူတည်သည်။ ပင်မဒေတာဘေ့စ်တလင် အပဌောင်သအလဲတစ်ခုနဟင့် ရဟာဖလေမဟုတလင် ၎င်သ၏ "ပေါ်လလင်ခဌင်သ" ကဌာသအချိန်သည် မစိုသရိမ်ရပါက၊ သင်သည် မကဌာသေသမီက ပဌောင်သလဲထာသသောမဟတ်တမ်သမျာသကို မိနစ်အနည်သငယ်တိုင်သ ရဟာဖလေနိုင်ပဌီသ ၎င်သတို့ကို အညလဟန်သပေသသည့် ဝန်ဆောင်မဟုတစ်ခုကို ဖန်တီသနိုင်သည်။ ဖဌစ်နိုင်ချေ အတိုဆုံသ တုံ့ပဌန်မဟုအချိန်ကို လိုချင်ရင်၊ တစ်ခုခုကို အကောင်အထည်ဖော်နိုင်ပါတယ်။ အရောင်သအ၀ယ်ထလက်ပုံသ ရဟာဖလေရေသဝန်ဆောင်မဟုသို့ အပ်ဒိတ်မျာသ ပေသပို့ရန်။

တလေ့ရဟိချက်မျာသ

  1. server-side pageaging ကို အကောင်အထည်ဖော်ခဌင်သသည် သိသာထင်ရဟာသသော နောက်ဆက်တလဲပဌဿနာဖဌစ်ပဌီသ လျင်မဌန်စလာ ကဌီသထလာသနေသော သို့မဟုတ် ရိုသရဟင်သသော ကဌီသမာသသော ဒေတာအတလဲမျာသအတလက်သာ အဓိပ္ပာယ်ရဟိပါသည်။ "ကဌီသမာသသော" သို့မဟုတ် "ကဌီသထလာသမဟုမဌန်သည်" ကိုအကဲဖဌတ်နည်သအတလက် တိကျသော စာရလက်မရဟိသော်လည်သ၊ ကနည်သလမ်သကို ကျလန်ုပ်လိုက်နာပါမည်-
    • ဆာဗာအချိန်နဟင့် ကလန်ရက်ထုတ်လလဟင့်ခဌင်သတို့ကို ထည့်သလင်သစဉ်သစာသပဌီသ ဒေတာစုဆောင်သမဟု အပဌည့်အစုံကို လက်ခံရရဟိပါက ပုံမဟန်အတိုင်သ စလမ်သဆောင်ရည်လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီပါက၊ ဆာဗာဘက်တလင် စာမျက်နဟာကို အကောင်အထည်ဖော်ရာတလင် မည်သည့်အချက်မဟ မရဟိပါ။
    • ဒေတာအနည်သငယ်သာရဟိသောကဌောင့် မဝေသတော့သောအနာဂတ်တလင် စလမ်သဆောင်ရည်ပဌဿနာမျာသ မမျဟော်မဟန်သနိုင်သည့်အခဌေအနေရဟိနိုင်သော်လည်သ ဒေတာစုဆောင်သမဟုသည် အဆက်မပဌတ်ကဌီသထလာသလျက်ရဟိသည်။ အနာဂတ်တလင် အချို့သော ဒေတာအစုမျာသသည် ယခင်အချက်ကို ကျေနပ်မဟုမရဟိတော့ပါက၊ စာမျက်နဟာကို ချက်ချင်သစတင်ရန် ပိုမိုကောင်သမလန်ပါသည်။
  2. စုစုပေါင်သရလဒ်မျာသကိုပဌသရန် သို့မဟုတ် စာမျက်နဟာနံပါတ်မျာသကိုပဌသရန် စီသပလာသရေသလုပ်ငန်သ၏ တင်သကျပ်သောလိုအပ်ချက်မရဟိပါက၊ သင့်စနစ်တလင် ရဟာဖလေရေသအင်ဂျင်မရဟိပါက၊ ကအချက်မျာသကို အကောင်အထည်မဖော်ဘဲ ရလေသချယ်စရာနံပါတ် 2 ကို ထည့်သလင်သစဉ်သစာသခဌင်သက ပိုကောင်သပါတယ်။
  3. မျက်နဟာချင်သဆိုင်ရဟာဖလေမဟုအတလက် ရဟင်သရဟင်သလင်သလင်သ လိုအပ်ချက်ရဟိပါက၊ စလမ်သဆောင်ရည်ကို မထိခိုက်စေဘဲ သင့်တလင် ရလေသချယ်စရာ နဟစ်ခုရဟိသည်။
    • ရဟာဖလေမဟုစံနဟုန်သမျာသ ပဌောင်သလဲသည့်အခါတိုင်သ ပမာဏအာသလုံသကို ပဌန်မတလက်ပါနဟင့်။
    • Solr၊ ElasticSearch၊ Sphinx နဟင့် အခဌာသရဟာဖလေရေသအင်ဂျင်မျာသကို အသုံသပဌုပါ။ သို့သော် ၎င်သသည် ပင်မဒေတာဘေ့စ်အတလက် အစာသထိုသမရနိုင်ကဌောင်သ နာသလည်ထာသသင့်ပဌီသ ရဟာဖလေမဟုပဌဿနာမျာသကို ဖဌေရဟင်သရန်အတလက် ပင်မသိုလဟောင်မဟုအပဌင် အသုံသပဌုသင့်သည်။
  4. ထို့အပဌင်၊ မျက်နဟာချင်သဆိုင်ရဟာဖလေမဟုကိစ္စတလင်၊ ရဟာဖလေမဟုရလဒ်စာမျက်နဟာကို ပဌန်လည်ရယူခဌင်သနဟင့် ရေတလက်ခဌင်သတို့ကို အပဌိုင်တောင်သဆိုမဟုနဟစ်ခုအဖဌစ် ပိုင်သခဌာသရန် အဓိပ္ပာယ်ရဟိပါသည်။ ရလဒ်မျာသကို အသုံသပဌုသူအတလက် ပိုအရေသကဌီသသော်လည်သ ရလဒ်မျာသရရဟိရန် ပမာဏမျာသကို ရေတလက်ခဌင်သထက် ပိုကဌာနိုင်ပါသည်။
  5. သင်ရဟာဖလေရန်အတလက် SQL ဒေတာဘေ့စ်ကို အသုံသပဌုနေပါက၊ ကအပိုင်သနဟင့်သက်ဆိုင်သည့် ကုဒ်ပဌောင်သလဲမဟုမဟန်သမျဟကို သင့်လျော်သောဒေတာပမာဏ (တိုက်ရိုက်ထုတ်လလဟဒေတာဘေ့စ်တလင် ပမာဏထက်ကျော်လလန်) စလမ်သဆောင်ရည်အတလက် ကောင်သမလန်စလာစမ်သသပ်သင့်သည်။ ဒေတာဘေ့စ်၏ဖဌစ်ရပ်အာသလုံသနဟင့် အထူသသဖဌင့် "တိုက်ရိုက်" တစ်ခုပေါ်တလင် query execution time ကို စောင့်ကဌည့်ရန်လည်သ အကဌံပဌုလိုပါသည်။ ဒေတာပမာဏ တိုသလာသည်နဟင့်အမျဟ မေသမဌန်သမဟုအစီအစဉ်မျာသသည် ဖလံ့ဖဌိုသတိုသတက်ရေသအဆင့်တလင် အာသလုံသအဆင်ပဌေသော်လည်သ၊ အခဌေအနေမဟာ သိသာစလာ ပဌောင်သလဲသလာသနိုင်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add