MYSQL Query Help

kolavari

Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    uMZb54P.jpg


    O3Uo4yM.jpg


    මේ මචන් explain කලාම

    මචන් මට තේරෙන විදිහට නම් මේක හොදයි...:confused: අවුලක් පෙන්නේ නැහැ ලොකුවට අර using where කියන එක ඇරුනහම...:baffled:මට හිතෙන්නේ ෆුල් ටේබල් එකම රීඩ් වෙනවා ඉන්ඩෙක්ස් කරත්...:yes:

    ඔකේ වෙන මොකුත් ඉන්ඩෙක්ස් නැද්ද ? :confused:
     

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    uMZb54P.jpg


    O3Uo4yM.jpg


    මේ මචන් explain කලාම

    Code:
    CREATE TABLE `products` (
      `pid` INT(6) NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(200) NOT NULL,
      `ptype` VARCHAR(10) NOT NULL,
      PRIMARY KEY (`pid`)
    )

    උබට හොදටම ෂුවර් ද මේ ටේබල් එකේ තියෙන්නේ මේ ෆීල්ඩ්ස් ටික විතරයි කියල? :nerd:

    මට නම් ෂුවර් නැහැ වගේ :baffled:

     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha


    මචන් මට තේරෙන විදිහට නම් මේක හොදයි...:confused: අවුලක් පෙන්නේ නැහැ ලොකුවට අර using where කියන එක ඇරුනහම...:baffled:මට හිතෙන්නේ ෆුල් ටේබල් එකම රීඩ් වෙනවා ඉන්ඩෙක්ස් කරත්...:yes:

    ඔකේ වෙන මොකුත් ඉන්ඩෙක්ස් නැද්ද ? :confused:
    මේක හොදයි කිව්වෙ කෝකද?
    ප්‍රයිමරි කී ඉන්ඩෙක්ස් එක තියෙනව..

    නෑ වෙන මුකුත් නෑ බන්. ඔය ෆීල්ඩ්ස් ටික විතරයි.
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha
    varchar -> char
    nvarchar -> nchar

    may give you a little performance gain ;)

    How to deal with properly.. :yes:

    ptype int කරලා where එකේදී

    Code:
    SELECT * FROM products WHERE ptype = 1
    Code:
    SELECT * FROM products WHERE ptype = 2
    ඔය වගේ බලපන්..මට හිතෙන්නේ අඩු වෙනවා සුවර් :frown:


    ptype ගොඩක් තියෙනවා නම් එකට වෙනම table එකක් ගන්න,simple :P

    ptype_id,ptype_name

    ඔය Slow වෙන්න හේතුව WHERE ptype = 'Inventory' එකේ words එකක්නේ compare වෙන්නේ එකයි..ඕක int උන ගමන් අඩු වෙනවා :yes:
    int කල බන් කිසිම වෙනසක් නෑ.
    PHP:
    SELECT * FROM varinats WHERE ptype = 1
    index කලාම execution time එක වැඩි වෙනව.

    හැබැයි index එක අයින් කලාම avg 1s වාසියක් තියෙනව ඔක්කොගෙම :yes:
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha
    "EXPLAIN" එකක් දාල බලපන් මචන් ඇයි අන්තිම එක ස්ලෝව් වෙන්නේ කියල..ඉන්ඩෙක්ස් එක පාවිච්චි වෙන්නේ නැතිද දන්නේ නැහැ...අ:baffled: නිත් එක බන් හැම එකටම ඉන්ඩෙක්ස් දැම්ම කියල වැඩක් නැහැ...:no:

    table එකේ මුළු ඩේටා ප්‍රමනානෙන් එක % එකක් තියෙනවා...ඒ ගානට වඩා එක භාවිත වෙලා නැත්තම් ඒකට ඉන්ඩෙක්ස් එකක් දාල වැඩක් නැහැ...:yes: තව ස්ලෝ වෙන්න පුළුවන්..:baffled:

    අනිත් එක වෙනම ටේබල් එකක් ගහන එක හොදයි කොහොමත් ptype එකට..මොකද ptype එක රිපීට් වෙනවනේ..Normal form රූල්ස් වයලේට් වෙනවා නේ එහෙම උනාද? නැද්ද? මන්ද...:P:baffled:

    varchar comparison එකට වඩා ඔතන ෆොරීන් කී එකක් (int) එකක් එක්ක කම්පෙයා කරන එක ෆාස්ට් තමයි මොකද varchar එකකට වඩා අඩු ඉඩක් තමයි int එකකට ඕනේ...ඒ නිසා එක ෆාස්ට් කියල බැලු බැල්මටම තේරෙනවා,,,එත් ඉන්ඩෙක්ස් එකක් දාල නිසා ලොකු වෙනසක් වෙන්න බැහැ...

    Explain කුවරී එකක් අරන් බලපන්..:yes:
    PHP:
    SELECT * FROM varinats INNER JOIN category ON varinats.ptype = category.id WHERE category.id = 1
    time එක තව වැඩි උනා avg 5.9s. ඔක්කොම restart කරල ආයිත් පටන් අරන් කරේ.

    97vbYID.jpg


     

    u_make_me_sick_

    Well-known member
  • Oct 1, 2011
    11,522
    7,320
    113
    Tables 2 kata kadanna, ptype ekata wenama table ekkak dala, eeke id eka use karanna product eke foreign key ekak widihata.
    ehema karoth wenama index ekak oni ne, anika eeka thamay karanna thiyana hondama widiha.
    anika ara kenek kiwa wage OR adu karala ee wenuwa IN use karanna. See: this
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha
    Tables 2 kata kadanna, ptype ekata wenama table ekkak dala, eeke id eka use karanna product eke foreign key ekak widihata.
    ehema karoth wenama index ekak oni ne, anika eeka thamay karanna thiyana hondama widiha.
    anika ara kenek kiwa wage OR adu karala ee wenuwa IN use karanna. See: this
    මේක කලා බන් ඒත් වාසියක් නෑනෙ. :dull:
     

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    මේක හොදයි කිව්වෙ කෝකද?
    ප්‍රයිමරි කී ඉන්ඩෙක්ස් එක තියෙනව..

    නෑ වෙන මුකුත් නෑ බන්. ඔය ෆීල්ඩ්ස් ටික විතරයි.

    හොදයි කිව්වේ මචන් ඉතින් ඔය පේන ටික අනුව බන් අවුලක් නැහැනේ...

    සමහර විට ඩේටා ටයිප් වෙනස් කරොත් මොකක් හරි වෙන්න පුළුවන්...

    මේක රන් කරලා බලපන් උඹේ ටේබල් එකේ...අන්තිම ෆීල්ඩ් එකේ පෙන්නයි ඔප්ටිමල් ඩේටා ටයිප් එක...

    SELECT * FROM varinats PROCEDURE ANALYSE(); :)
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha
    හොදයි කිව්වේ මචන් ඉතින් ඔය පේන ටික අනුව බන් අවුලක් නැහැනේ...

    සමහර විට ඩේටා ටයිප් වෙනස් කරොත් මොකක් හරි වෙන්න පුළුවන්...

    මේක රන් කරලා බලපන් උඹේ ටේබල් එකේ...අන්තිම ෆීල්ඩ් එකේ පෙන්නයි ඔප්ටිමල් ඩේටා ටයිප් එක...

    SELECT * FROM varinats PROCEDURE ANALYSE(); :)
    එතන කුවරි දෙකක් තියෙනව. ඒකයි කෝකද කියල ඇහුවෙ. :dull:
     

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    එතන කුවරි දෙකක් තියෙනව. ඒකයි කෝකද කියල ඇහුවෙ. :dull:

    හොඳයි කිව්වේ දෙවෙනි එකට...:baffled: ඉන්ඩෙක්ස් එක දාපු එකේ රෝව්ස් ගාන ලක්ෂ දෙකට විතර අඩු වෙලානේ :nerd:
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,903
    1
    9,707
    113
    Gampaha
    හොඳයි කිව්වේ දෙවෙනි එකට...:baffled: ඉන්ඩෙක්ස් එක දාපු එකේ රෝව්ස් ගාන ලක්ෂ දෙකට විතර අඩු වෙලානේ :nerd:
    ඒත් ටටිම් එක වැඩීනෙ බන්. ඒකයි අවුල. ඩබල් වෙලා.
    මම ඇනලයිස් කලා ඊනම් දාන්න කියන්නෙ. අපෝ ඒක මල ඇනයක් වෙනව පස්සෙ. ඒත් දාල බැලුව. නතින්ග් චේන්ග්ස් බන්.. මට පේන්නෙ හාඩ්වෙයා අවුලක් වගේ. :dull:
    ලගදි රෙප් දීල :)


    MySQL workbench 6CE install karala `dashboard` tab ekata yanna machan. Eke query analyser ekak thiyenawa. ubata idea ekak ganna puluwan ethakota mona queries da run wenne, kothanada slow wenne kiyala.

    wb-performance-dashboard.png


    http://mysqlworkbench.org/2014/04/whats-new-in-mysql-workbench-6-1/
    තෑන්ක්ස් මචන්. මම ඕක ඉන්ස්ටෝල් කරල තියෙන්නෙ. ඒත් ඔන් කරන්නෙ නෑ. සිස්ටම් රෙශෝසස් යූස් කරනව වැඩීනෙ බන්.. අනිත් ඒව හිර වෙන්න ගන්නව. තෑන්ක්ස් 14+

    -------------------------------------
    ඔක්කොටම රෙප් දුන්න. අවිත් නැති අයට ලගදි දීල.
     
    Dec 30, 2013
    1,235
    166
    0
    එක එක ඒව වෙනස් කර කර දගලන්නේ නැතිව වෙන මැෂින් එකක ට්‍රයි කරල බලපන් ඉස්සෙල්ල.
     

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    ඒත් ටටිම් එක වැඩීනෙ බන්. ඒකයි අවුල. ඩබල් වෙලා.
    මම ඇනලයිස් කලා ඊනම් දාන්න කියන්නෙ. අපෝ ඒක මල ඇනයක් වෙනව පස්සෙ. ඒත් දාල බැලුව. නතින්ග් චේන්ග්ස් බන්.. මට පේන්නෙ හාඩ්වෙයා අවුලක් වගේ. :dull:
    ලගදි රෙප් දීල :)



    මටත් හිතුන enum දාන එක ගැන...:baffled:

    එත් එක ප්‍රැක්ටිකල් නැහැ නේ උඹේ ඇප්ලිකේෂන් එකත් එක්ක...:oo: අලුත් ප්‍රඩක්ට් ටයිප් එකක් ඇඩ් කරොත් ටේබල් එකම අලුතෙන් වෙනස් කරන්න වෙනවා...varchar වෙනවට char දාල බැලුවොත්? :baffled:

    වෙනසක් අනිවා තියෙයි..ජොයින් එක අයින් කරන්න ඕනේ හැබැයි
     

    dildude

    Member
    May 27, 2015
    12,540
    620
    0
    🅷🅴🅰V🅴🅽
    :lol::rofl::rofl: උඹ කියනකන් ඉඳල තියෙන්නේ...:P

    යකෝ කොටුවට යන්න ඕනේ එකාට කොටුවට යන්න එපා වැල්ලවත්තට යන්න කියල හරියනවද? :lol::rofl:

    na ban. u ithin thathpareta performance balanawa nam document db ekak use kala nam iwarai ne :P:rolleyes: