SQL စုံစမ်သစစ်ဆေသမဟုတစ်ခု၏ဇာတ်လမ်သ

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

စောပိုငျသကာလ

ငါပဌောနေတာတလေကို ရဟင်သရဟင်သလင်သလင်သသိရအောင် VWO အကဌောင်သ နည်သနည်သပဌောပဌမယ်။ ၎င်သသည် သင့်ဝဘ်ဆိုက်မျာသပေါ်တလင် ပစ်မဟတ်ထာသသော ကမ်ပိန်သမျာသကို အမျိုသမျိုသဖလင့်နိုင်သည့် ပလပ်ဖောင်သတစ်ခုဖဌစ်သည်- A/B စမ်သသပ်မဟုမျာသ ပဌုလုပ်ခဌင်သ၊ လာရောက်သူမျာသနဟင့် ဘာသာပဌန်ဆိုမဟုမျာသကို ခဌေရာခံခဌင်သ၊ အရောင်သလမ်သကဌောင်သကို ပိုင်သခဌာသစိတ်ဖဌာခဌင်သ၊ အပူမဌေပုံမျာသကို ပဌသခဌင်သနဟင့် လည်ပတ်မဟုမဟတ်တမ်သမျာသကို ဖလင့်ခဌင်သတို့ ပဌုလုပ်နိုင်ပါသည်။

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

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

Chrome ကိုအသုံသပဌုသူမျာသအတလက် သို့မဟုတ် (ဥရောပတလင်ရဟိပဌီသ အသုံသပဌုသူမျာသအတလက် <date d1> မဟ <date d2> အထိ) "abc.com" စာမျက်နဟာရဟိ ကလစ်အာသလုံသကိုပဌပါ iPhone)

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

တောင်သဆိုမဟုနဟေသကလေသ

မေသခလန်သထုတ်သည့်ဖောက်သည်သည် အလိုလိုလျင်မဌန်စလာ လုပ်ဆောင်သင့်သည့်အရာတစ်ခုကို လုပ်ဆောင်ရန် ကဌိုသစာသနေသည်-

"/jobs" ပါရဟိသော URL ဖဌင့် မည်သည့်စာမျက်နဟာကိုမဆို ဝင်ကဌည့်ခဲ့သော အသုံသပဌုသူမျာသအတလက် စက်ရဟင်မဟတ်တမ်သအာသလုံသကို ပဌပါ

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

ပဏာမစုံစမ်သစစ်ဆေသခဌင်သ။

Database ထဲမဟာ ဘာတလေဖဌစ်နေလဲ ကဌည့်ရအောင်။ အောက်တလင်မူရင်သနဟေသကလေသသော SQL မေသမဌန်သမဟုဖဌစ်သည်-

SELECT 
    count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions 
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND sessions.referrer_id = recordings_urls.id 
    AND  (  urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]   ) 
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545177599) 
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0 ;

ကသည်မဟာ အချိန်ဇယာသမျာသဖဌစ်သည်-

စီစဉ်ထာသသောအချိန်- 1.480 ms အကောင်အထည်ဖော်ချိန်- 1431924.650 ms

တန်သစီပဌီသ ရောက်ခဲ့တဲ့ ၁၅၀,ဝဝဝ။ စုံစမ်သမေသမဌန်သမဟု အစီအစဉ်ရေသဆလဲသူသည် စိတ်ဝင်စာသဖလယ်အသေသစိတ်အချက်အချို့ကို ပဌသခဲ့သော်လည်သ ထင်ရဟာသသော ပိတ်ဆို့မဟုမျာသ မရဟိပါ။

တောင်သဆိုချက်ကို ဆက်လက်လေ့လာကဌပါစို့။ မင်သမဌင်တဲ့အတိုင်သပဲ။ JOIN စာသပလဲသုံသလုံသ

  1. အစည်သအဝေသမျာသ: စက်ရဟင်အချက်အလက်ကို ပဌသရန်- ဘရောက်ဆာ၊ အသုံသပဌုသူ အေသဂျင့်၊ နိုင်ငံ၊ စသည်ဖဌင့်။
  2. recording_data: မဟတ်တမ်သတင်ထာသသော URL မျာသ၊ စာမျက်နဟာမျာသ၊ လည်ပတ်မဟုကဌာချိန်
  3. url မျာသ: အလလန်ကဌီသမာသသော URL မျာသကို ပလာသခဌင်သမဟ ရဟောင်ကဌဉ်ရန်၊ ၎င်သတို့ကို သီသခဌာသဇယာသတလင် သိမ်သဆည်သပါသည်။

ကျလန်ုပ်တို့၏ဇယာသအာသလုံသကို ပိုင်သခဌာသထာသပဌီသဖဌစ်ကဌောင်သကိုလည်သ သတိပဌုပါ။ account_id. ကနည်သအာသဖဌင့်၊ အထူသသဖဌင့် ကဌီသမာသသောအကောင့်တစ်ခုသည် အခဌာသသူမျာသအတလက် ပဌဿနာဖဌစ်စေသည့် အခဌေအနေတစ်ခုကို ဖယ်ထုတ်ထာသသည်။

သဲလလန်စရဟာနေ

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

urls && array(
	select id from acc_{account_id}.urls 
	where url  ILIKE  '%enterprise_customer.com/jobs%'
)::text[]

ပထမ အတလေသက အဲဒါ ဖဌစ်ကောင်သဖဌစ်နိုင်လို့ ILIKE ကရဟည်လျာသသော URL မျာသအာသလုံသတလင် (ကျလန်ုပ်တို့တလင် ၁.၄ သန်သကျော်ရဟိသည်။ ထူသခဌာသ á€€á€¡á€€á€±á€¬á€„့်အတလက် စုဆောင်သထာသသော URL မျာသ) စလမ်သဆောင်ရည် ထိခိုက်နိုင်သည်။

ဒါပေမယ့် မဟုတ်ဘူသ၊ အဲဒါက အဓိကမဟုတ်ဘူသ!

SELECT id FROM urls WHERE url ILIKE '%enterprise_customer.com/jobs%';
  id
--------
 ...
(198661 rows)

Time: 5231.765 ms

နမူနာပုံစံရဟာဖလေမဟုတောင်သဆိုချက်ကိုယ်တိုင်က 5 စက္ကန့်သာကဌာသည်။ ထူသခဌာသသော URL သန်သပေါင်သမျာသစလာတလင် ပုံစံတစ်ခုကို ရဟာဖလေခဌင်သသည် ပဌဿနာမဟုတ်သည်မဟာ ရဟင်သပါသည်။

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

analytics_db=# SELECT
    count(*)
FROM
    acc_{account_id}.urls as recordings_urls,
    acc_{account_id}.recording_data_0 as recording_data,
    acc_{account_id}.sessions_0 as sessions
WHERE
    recording_data.usp_id = sessions.usp_id
    AND sessions.referrer_id = recordings_urls.id
    AND r_time > to_timestamp(1542585600)
    AND r_time < to_timestamp(1545177599)
    AND recording_data.duration >=5
    AND recording_data.num_of_pages > 0 ;
 count
-------
  8086
(1 row)

Time: 147.851 ms

ပဌီသတော့ ဒါက ငါတို့ကိစ္စမဟုတ်ဘူသ။ JOINအတော်လေသ မဌန်လာခဲ့တယ်။

သံသယရဟိသူအဝိုင်သကို ကျဉ်သမဌောင်သစေပါသည်။

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

  • subquery URL အတလက် EXISTS ကိုသုံသပါ။: URLs မျာသအတလက် subquery တလင် ပဌဿနာတစ်စုံတစ်ရာ ရဟိမရဟိ ထပ်မံစစ်ဆေသလိုပါသည်။ ဒါကို အောင်မဌင်ဖို့ နည်သလမ်သတစ်ခုကတော့ ရိုသရိုသရဟင်သရဟင်သပဲ သုံသတာပါပဲ။ EXISTS. EXISTS နိုင် အခဌေအနေနဟင့် ကိုက်ညီသော တစ်ခုတည်သသော စာကဌောင်သကို တလေ့ရဟိသည်နဟင့် ၎င်သသည် ချက်ချင်သအဆုံသသတ်သလာသသည့်အတလက် စလမ်သဆောင်ရည်ကို အလလန်တိုသတက်ကောင်သမလန်စေသည်။

SELECT
	count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls,
    acc_{account_id}.recording_data as recording_data,
    acc_{account_id}.sessions as sessions
WHERE
    recording_data.usp_id = sessions.usp_id
    AND  (  1 = 1  )
    AND sessions.referrer_id = recordings_urls.id
    AND  (exists(select id from acc_{account_id}.urls where url  ILIKE '%enterprise_customer.com/jobs%'))
    AND r_time > to_timestamp(1547585600)
    AND r_time < to_timestamp(1549177599)
    AND recording_data.duration >=5
    AND recording_data.num_of_pages > 0 ;
 count
 32519
(1 row)
Time: 1636.637 ms

အင်သ ဟုတ်တယ်။ ထုပ်ပိုသပဌီသသောအခါတလင် Subquery EXISTS၊ အရာအာသလုံသကို အလလန်မဌန်ဆန်စေသည်။ နောက်ယုတ္တိရဟိသောမေသခလန်သမဟာ အဘယ်ကဌောင့်တောင်သဆိုမဟုနဟင့်အတူ JOIN-ami နဟင့် subquery ကိုယ်တိုင်က တစ်ညသချင်သ လျင်မဌန်သော်လည်သ အတူတူ နဟေသကလေသနေပါသလာသ။

  • subquery ကို CTE သို့ ရလဟေ့ပါ။ : query သည် သူ့ဘာသာသူ မဌန်ဆန်နေပါက၊ ကျလန်ုပ်တို့သည် အမဌန်ရလဒ်ကို ညသစလာတလက်ချက်ပဌီသ ပင်မမေသမဌန်သမဟုသို့ ပေသဆောင်နိုင်ပါသည်။

WITH matching_urls AS (
    select id::text from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%'
)

SELECT 
    count(*) FROM acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions,
    matching_urls
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND  (  1 = 1  )  
    AND sessions.referrer_id = recordings_urls.id
    AND (urls && array(SELECT id from matching_urls)::text[])
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545107599)
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0;

ဒါပေမယ့် အရမ်သနဟေသနေသေသတယ်။

တရာသခံကို ရဟာဖလေခဌင်သ။

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

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

မူလတောင်သဆိုချက်တလင်၊

AND  (  urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]   )

ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ URL မျာသပေါ်တလင် ပုံစံရဟာဖလေမဟုတစ်ခုပဌုလုပ်ပဌီသနောက် အမျာသအာသဖဌင့် ပို့စ်မျာသပါသည့် URL မျာသအာသလုံသနဟင့် လမ်သဆုံကိုရဟာပါ။ ကနေရာတလင် "urls" သည် URLs မျာသအာသလုံသကို ပါဝင်သောဇယာသကို ရည်ညလဟန်သခဌင်သမရဟိသော်လည်သ ဇယာသရဟိ "urls" ကော်လံကို ရည်ညလဟန်သသောကဌောင့် ၎င်သသည် အနည်သငယ်ရဟုပ်ထလေသပါသည်။ recording_data.

သံသယတလေ တိုသလာနေတယ်။ &&ထုတ်ပေသထာသသော စုံစမ်သမေသမဌန်သမဟု အစီအစဉ်တလင် ၎င်သတို့အတလက် အတည်ပဌုချက်ကို ရဟာဖလေရန် ကဌိုသစာသခဲ့သည်။ EXPLAIN ANALYZE (ကျလန်ုပ်တလင် သိမ်သဆည်သထာသသော အစီအစဉ်တစ်ခု ရဟိထာသပဌီသဖဌစ်သော်လည်သ၊ မေသမဌန်သမဟု အစီအစဉ်ရေသဆလဲသူမျာသ၏ ပလင့်လင်သမဌင်သာမဟုကို နာသလည်ရန် ကဌိုသစာသခဌင်သထက် SQL တလင် စမ်သသပ်ခဌင်သမဟာ ပိုအဆင်ပဌေပါသည်။)

Filter: ((urls && ($0)::text[]) AND (r_time > '2018-12-17 12:17:23+00'::timestamp with time zone) AND (r_time < '2018-12-18 23:59:59+00'::timestamp with time zone) AND (duration >= '5'::double precision) AND (num_of_pages > 0))
                           Rows Removed by Filter: 52710

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

အခဌေအနေကို ခလဲထုတ်ပဌီသ ဒါကို စမ်သသပ်ခဲ့တယ်။

SELECT 1
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data_30 as recording_data_30, 
    acc_{account_id}.sessions_30 as sessions_30 
WHERE 
	urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]

ကမေသခလန်သသည် နဟေသကလေသသည်။ အကဌောင်သမဟာ၊ JOIN-s က မဌန်ပဌီသ subqueries တလေက မဌန်တယ်၊ ကျန်တာက တစ်ခုတည်သပဲ။ && အော်ပရေတာ။

ကသည်မဟာ အဓိကကျသော လုပ်ဆောင်ချက်တစ်ခုသာဖဌစ်သည်။ ပုံစံတစ်ခုကို ရဟာဖလေရန် ကျလန်ုပ်တို့သည် အမဌဲတမ်သ နောက်ခံ URL ဇယာသတစ်ခုလုံသကို ရဟာဖလေရန် လိုအပ်ပဌီသ လမ်သဆုံမျာသကို အမဌဲရဟာဖလေရန် လိုအပ်ပါသည်။ ၎င်သတို့သည် ရည်ညလဟန်သသော ID မျာသသာဖဌစ်သောကဌောင့် URL မဟတ်တမ်သမျာသကို တိုက်ရိုက်ရဟာဖလေ၍မရပါ။ urls.

အဖဌေတစ်ခုဆီသို့

&& နဟစ်ခုလုံသက ကဌီသမာသတာကဌောင့် နဟေသပါတယ်။ အစာသထိုသလိုက်ရင် လုပ်ဆောင်ချက်က အတော်လေသမဌန်ပါလိမ့်မယ်။ urls အပေါ် { "http://google.com/", "http://wingify.com/" }.

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

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

SELECT urls.url
FROM 
	acc_{account_id}.urls as urls,
	(SELECT unnest(recording_data.urls) AS id) AS unrolled_urls
WHERE
	urls.id = unrolled_urls.id AND
	urls.url  ILIKE  '%jobs%'

အစာသ JOIN syntax သည် ကျလန်ုပ်သည် subquery ကိုအသုံသပဌုပဌီသ ချဲ့ထလင်ခဲ့သည်။ recording_data.urls array တလင် အခဌေအနေအာသ တိုက်ရိုက်အသုံသချနိုင်စေရန် WHERE.

ဒီနေရာမဟာ အရေသကဌီသဆုံသက အဲဒါပါပဲ။ && ပေသထာသသော ထည့်သလင်သမဟုတလင် ကိုက်ညီသော URL ပါရဟိမရဟိ စစ်ဆေသရန် အသုံသပဌုသည်။ အနည်သငယ်စလေပါက၊ ကလုပ်ဆောင်ချက်သည် array (သို့မဟုတ် ဇယာသတစ်ခု၏အတန်သ) ၏ဒဌပ်စင်မျာသမဟတစ်ဆင့် ရလေ့လျာသနေသည်ကိုတလေ့နိုင်ပဌီသ အခဌေအနေ (ကိုက်ညီမဟု) ကိုတလေ့သောအခါ ရပ်သလာသမည်ဖဌစ်သည်။ မင်သကို ဘာမဟမမဟတ်မိဘူသလာသ? ကမ္မ၊ EXISTS.

ကတည်သက recording_data.urls subquery context ရဲ့ ပဌင်ပကနေ ကိုသကာသလို့ရတယ်။ EXISTS subquery ကို ၎င်သနဟင့် ထုပ်ပိုသပါ။

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

SELECT 
    count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions 
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND  (  1 = 1  )  
    AND sessions.referrer_id = recordings_urls.id 
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545177599) 
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0
    AND EXISTS(
        SELECT urls.url
        FROM 
            acc_{account_id}.urls as urls,
            (SELECT unnest(urls) AS rec_url_id FROM acc_{account_id}.recording_data) 
            AS unrolled_urls
        WHERE
            urls.id = unrolled_urls.rec_url_id AND
            urls.url  ILIKE  '%enterprise_customer.com/jobs%'
    );

ပဌီသခဲတဲ့ အချိန် Time: 1898.717 ms ဆင်နလဟဲရမယ့်အချိန်?!

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

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

စမ်သသပ်မဟုအာသလုံသသည် အပဌုသဘောဆောင်သော ရလဒ်မျာသကို အမဌဲပေသသည်။ အာသလုံသပဌင်ဆင်ပဌီသပါပဌီ။

သင်ခန်သစာမျာသ

ဒီပုံပဌင်လေသကနေ သင်ခန်သစာယူစရာတလေ အမျာသကဌီသရဟိပါတယ်။

  1. Query အစီအစဉ်မျာသသည် ဇာတ်လမ်သတစ်ခုလုံသကို မပဌောပဌသော်လည်သ သဲလလန်စမျာသကို ပေသစလမ်သနိုင်သည်။
  2. အဓိက သံသယရဟိသူတလေဟာ အမဌဲတမ်သ တရာသခံအစစ်တလေ မဟုတ်ပါဘူသ။
  3. နဟေသကလေသသောမေသခလန်သမျာသကို ပိတ်ဆို့မဟုမျာသကို သီသခဌာသခလဲထုတ်နိုင်သည်။
  4. ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သအာသလုံသသည် သဘာဝတလင် လျော့ချခဌင်သမဟုတ်ပါ။
  5. ၏အသုံသပဌုမဟု EXISTဖဌစ်နိုင်လျဟင် ကုန်ထုတ်စလမ်သအာသ သိသိသာသာ တိုသလာနိုင်သည်။

ကောက်ချက်

ကျလန်ုပ်တို့သည် မေသမဌန်သမဟုအချိန်မဟ ~24 မိနစ်မဟ 2 စက္ကန့်သို့သလာသသည် - သိသိသာသာ စလမ်သဆောင်ရည် တိုသလာပါသည်။ ကဆောင်သပါသသည် ကဌီသကဌီသမာသမာသ ထလက်ပေါ်လာသော်လည်သ၊ ကျလန်ုပ်တို့ ပဌုလုပ်ခဲ့သည့် စမ်သသပ်မဟုအာသလုံသသည် တစ်နေ့တည်သတလင် ဖဌစ်ပျက်ခဲ့ပဌီသ အကောင်သဆုံသဖဌစ်အောင် နဟင့် စမ်သသပ်ရန် ၁.၅ နာရီမဟ ၂ နာရီကဌာသ အချိန်ယူခဲ့သည်ဟု ခန့်မဟန်သရသည်။

SQL သည် ၎င်သကိုမကဌောက်ပါက အံ့သဌဖလယ်ကောင်သသောဘာသာစကာသတစ်ခုဖဌစ်သော်လည်သ ၎င်သကိုလေ့လာပဌီသအသုံသပဌုရန်ကဌိုသစာသပါ။ SQL queries တလေကို ဘယ်လို execute လုပ်သလဲ၊ database က query plan တလေကို ဘယ်လိုထုတ်ပေသသလဲ၊ indexes အလုပ်လုပ်ပုံနဲ့ သင်ကိုင်တလယ်နေတဲ့ data အရလယ်အစာသကို ကောင်သကောင်သနာသလည်ခဌင်သဖဌင့်၊ queries ကို optimize လုပ်ရာမဟာ သင် အလလန်အောင်မဌင်နိုင်ပါတယ်။ သို့သော် မတူညီသောချဉ်သကပ်မဟုမျာသကို ဆက်လက်ကဌိုသစာသပဌီသ ပဌဿနာမျာသကို ဖဌည်သညဟင်သစလာခလဲခဌမ်သကာ ပိတ်ဆို့မဟုမျာသကိုရဟာဖလေရန် အညီအမျဟအရေသကဌီသပါသည်။

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

အထူသပင်ကျေသဇူသတင်ရဟိပါသည်။ á€„ါ့ရဲဘော်မျာသ Aditya Mishra ၏အမိန့်တော်၌Aditya Gauru Ðž Varun Malhotra á€–ောက်ထလက်ခဌင်သနဟင့် Dinkar Pandir á€€á€»á€œá€”်ုပ်တို့၏ နောက်ဆုံသတောင်သဆိုမဟုတလင် အရေသကဌီသသော အမဟာသတစ်ခုကို ကျလန်ုပ်တို့ နောက်ဆုံသတလင် နဟုတ်မဆက်မီတလင် တလေ့ရဟိရန်။

source: www.habr.com

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster