SQL Help 2

K_ZONE

Well-known member
  • May 28, 2009
    5,151
    4,043
    113
    invoke db "Injected Memory"
    හොදම ක්‍රමය stored proc එකකට යන එක,

    ඒත් සාමන්යෙන් මිලියන 10 ක් වගෙ records තියෙන columns 35 ක් විතර තියෙන Table එකක උනත් සාමන්ය PC එකක Quries 10 ක් දැනෙන්නෙ වත් නැ server එකට.

    ඔයාගෙ ප්‍රශ්නෙ ප්‍රශ්නයක් වෙන්නෙ ඔය Query ඔක්කොම single thread එකක රන් උනොත්, එහෙම උනොත් ඇප්ලිකේශන් එක ගොඩක් වෙලාව ගන්නවා.

    මට ඔහොම එකක් උනා ටේබල් එකකට ඩට ගන්න Query 1500 ක් විතර රන් කරන්න ගිහින් විනඩි 20 ක් විතර ගියා පිට රටක ඉදන් VPN එකකින් වගේ ලොග් වෙද්දි, View එකක් දාන්න බැ Tables තත්පරේට දාස් ගානක් Insert වෙනවා,

    ඒත් Query වෙන්නෙ දවසට දෙතුන් පාරයි.

    stored proc එකක් ලිව්වා වෙනම User Func එක්ක ලයින් 2500 ක විතර,
    දැන් Table එක ලොඩ් වෙන්නෙ ms 20 කින් :)

    stored proc එකක් හදාගන්න, stored proc එකකින් dataset දෙකක් අරන් වැඩේ කරගන්න අමාරු නම්..

    Union එකක් දාලා පලවෙනි row එක අර කියන deta ටික ගන්න, කොලම් වලට වඩා අර කියන info අඩුයි නම් අනිත් එවට 1 වගෙ value එකක් දාලා හරියටම colmns ගානට ඒකත් හදාගන්න, නැත්නම් record set එක අව්ල් වෙයි.

    Header එකට ඕන Info ටික වෙන වෙනම Sub Query වලට ගත්තා නම් ඔයාට Debug කරද්දි උනත් ලේස්යි..


    ඒත් අමාරු නම් ඔයාට ඕන විදියටම SQL Virtual Table එකක් හදාගෙන data ටික Insert කරගන්න. Table එකේ data ටික curser එකක් දාලා loop එකකින් ගන්න..

    SP එකේ අන්තිමට නිකම්ම නිකං Select එකක් දෙන්න.

    කරන්න නම් ක්‍රම ගොඩක් තියෙනවා.

    තනි Query එකෙනුත් ඔය ටික කරන්න පුලුවන්, ඒත් ඔයාට Debug කරගනන් අමාරුයි එහෙම.
     
    • Like
    Reactions: GT9

    GAC

    Well-known member
  • Jul 14, 2009
    8,179
    677
    113
    ගෙන්දගම් පොළොve
    උබ කොහොමත් details ටික query කරන්න ඕනෙනේ table එකේ පෙන්නන්න.

    ඉතිං query එක උඩින්ම දාල උබට ඕන data ටික පෙන්නපන්.
    database එකේ table කීපෙකින් data ඕනේ නම් leftjoint කරපං.
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    ASP.NET MVC ද? web forms ද?
    db call limit තියෙනවා නම් EF ගන්න එපා. row sql + ADO.NET වලින් කරන්න. original data table එකට අදාලව summery / statistics view එකක් or SP එකක් හදලා ඒකෙන් එකපාර data ගන්න පුළුවන් ද බලන්න.

    අඩේ මම PHP වලින් කරන්නේ මචෝ :D:yes:

    හොදම ක්‍රමය stored proc එකකට යන එක,

    ඒත් සාමන්යෙන් මිලියන 10 ක් වගෙ records තියෙන columns 35 ක් විතර තියෙන Table එකක උනත් සාමන්ය PC එකක Quries 10 ක් දැනෙන්නෙ වත් නැ server එකට.

    ඔයාගෙ ප්‍රශ්නෙ ප්‍රශ්නයක් වෙන්නෙ ඔය Query ඔක්කොම single thread එකක රන් උනොත්, එහෙම උනොත් ඇප්ලිකේශන් එක ගොඩක් වෙලාව ගන්නවා.

    මට ඔහොම එකක් උනා ටේබල් එකකට ඩට ගන්න Query 1500 ක් විතර රන් කරන්න ගිහින් විනඩි 20 ක් විතර ගියා පිට රටක ඉදන් VPN එකකින් වගේ ලොග් වෙද්දි, View එකක් දාන්න බැ Tables තත්පරේට දාස් ගානක් Insert වෙනවා,

    ඒත් Query වෙන්නෙ දවසට දෙතුන් පාරයි.

    stored proc එකක් ලිව්වා වෙනම User Func එක්ක ලයින් 2500 ක විතර,
    දැන් Table එක ලොඩ් වෙන්නෙ ms 20 කින් :)

    stored proc එකක් හදාගන්න, stored proc එකකින් dataset දෙකක් අරන් වැඩේ කරගන්න අමාරු නම්..

    Union එකක් දාලා පලවෙනි row එක අර කියන deta ටික ගන්න, කොලම් වලට වඩා අර කියන info අඩුයි නම් අනිත් එවට 1 වගෙ value එකක් දාලා හරියටම colmns ගානට ඒකත් හදාගන්න, නැත්නම් record set එක අව්ල් වෙයි.

    Header එකට ඕන Info ටික වෙන වෙනම Sub Query වලට ගත්තා නම් ඔයාට Debug කරද්දි උනත් ලේස්යි..


    ඒත් අමාරු නම් ඔයාට ඕන විදියටම SQL Virtual Table එකක් හදාගෙන data ටික Insert කරගන්න. Table එකේ data ටික curser එකක් දාලා loop එකකින් ගන්න..

    SP එකේ අන්තිමට නිකම්ම නිකං Select එකක් දෙන්න.

    කරන්න නම් ක්‍රම ගොඩක් තියෙනවා.

    තනි Query එකෙනුත් ඔය ටික කරන්න පුලුවන්, ඒත් ඔයාට Debug කරගනන් අමාරුයි එහෙම.

    මේ ත්‍රෙඩ් එකට වැටුන රිප්ලයි ටික කියෙව්වම කරන්න පුලුවන් විදි කීපයක්ම දැන් ඔලුවේ කරකැවෙනවා :D:D සමහර ඒව හොඳ උනාට කිව්වත් වගේ DEBUG කරන්න ESCALE කරන්න ටිකක් අමාරුයි. මම බැලුවේ FUNCTION එකක් ලියන්න පාස් වෙන ඩේට සෙට් එකේ එක් එක් කොලම් එකට අදාල ඩේට ටික FOREACH LOOP එකක් හරහා වෙන වෙනම ඇරේස් වලට දාගෙන ඇරේස් ප්‍රෝසස් කරල පෙන්වන්න. එකිනෙකට වෙනස් කන්ඩිෂන් වලට අදාලව පාස් වෙන රිසල්ට් සෙට් හැම එකටම එකම FUNCITON එක දාන්න පුුලුවන් නිසා මේක ලේසි වගේ. ඩේට බේස් එකේ මුකුත් අමුතුවෙන් කරන්න ඕනෙත් නෑ. :D

    රිප්ලයි එකට තෑන්ක්ස් :D;)
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    උබ කොහොමත් details ටික query කරන්න ඕනෙනේ table එකේ පෙන්නන්න.

    ඉතිං query එක උඩින්ම දාල උබට ඕන data ටික පෙන්නපන්.
    database එකේ table කීපෙකින් data ඕනේ නම් leftjoint කරපං.

    තෑන්ක්ස් මචං :D
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,849
    1
    9,594
    113
    Gampaha
    SELECT *,COUNT(item no), SUM(item PRICE), COUNT(DISTINCT<fieldName>) FROM <table> WHERE ... GROUP BY item no

    Please Note - item no should be unique for each item. if it is NOT use PID
     

    The_Killer

    Well-known member
  • Jan 20, 2014
    11,051
    2,196
    113
    WA, Straya 🇦🇺🦘
    www.elakiri.com
    PHP Sessions වල ඩේටා තියාගන්න එපා. ලොකු Security risk එකක් මචං. පුළුවන් තරම් php oop ගහන්න. තියාගත්ත ඩේටා ඉක්මනට අයින් කරලා දාන්න. PHP වලින්ම ඩේටා ටික ඕනා විදියට කරකවලා ගන්න. DB එකෙන් අමුවෙන්ම data ගන්න.