Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > Sybase

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-15-2008, 08:33 PM
Jorge Reyes
 
Posts: n/a
Default HOW CAN I DO THIS FASTER II

Hi Manish Negandhi, thank you for the previous response, i have some
doubts about this:

(1)Remove "cursor" from the stored proc and apply temp table logic
there. i.e. write a code to apply the logic using temp table instead
of cursors. cursors perform very slow compare to the plain sql

i thought that cursors were better than temp tables, i am little
confused about this, in a forum of MSSQL recommend me this:

>>>>>>>>>

You can avoid several seek/scans by using CASE expressions in a single
query
instead of separate aggregate subqueries. For example:
SELECT
@iTOTAL_BAZ = 0,
@iTOTAL_EKT = 0,
@iTOTAL_IUS = 0
SELECT
@iTOTAL_BAZ = SUM(CASE WHEN B.corpo_id = 'BAZ' THEN 1 ELSE 0
END),
@iTOTAL_EKT = SUM(CASE WHEN B.corpo_id = 'EKT' THEN 1 ELSE 0
END),
@iTOTAL_IUS = SUM(CASE WHEN B.corpo_id = 'IUS' THEN 1 ELSE 0 END)
FROM #TMP_UB_TOTGRALBYSIDNID AS A
LEFT JOIN usr_mines AS B ON A.MINid = B.MIN_id
WHERE
A.PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
A.SID = @CUR_SID AND A.NID = @CUR_NID
I think you can get the most performance improvement by using a set-
based
insert/update instead of a cusor. With Microsoft SQL Server, you
could
probably eliminate the temp tables and use techniques like derived
tables
but I don't know what you can and can't do in Sybase

>>>>>>>>>>>


(2)Get showplan for the proc and find out if any queries inside the
proc preforms "Table Scan". You can find showplan for a proc without
actually executing it by turning "set fmtonly" to on

i am so sorry but i dont understand nothing about this, you mean that
first i have to avoid cursors and then execute the sp like this:

set fmtonly;
exec PR_.....

Thank you so much for your help, I really appreciate your time on this.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-17-2008, 05:23 PM
Carl Kayser
 
Posts: n/a
Default Re: HOW CAN I DO THIS FASTER II


"Jorge Reyes" <jorg_reyes@hotmail.com> wrote in message
news:74ee24dd-c468-4adb-8aba-54f5a1e328e6@y21g2000hsf.googlegroups.com...
> Hi Manish Negandhi, thank you for the previous response, i have some
> doubts about this:
>
> (1)Remove "cursor" from the stored proc and apply temp table logic
> there. i.e. write a code to apply the logic using temp table instead
> of cursors. cursors perform very slow compare to the plain sql
>
> i thought that cursors were better than temp tables, i am little
> confused about this, in a forum of MSSQL recommend me this:
>
>>>>>>>>>>

> You can avoid several seek/scans by using CASE expressions in a single
> query
> instead of separate aggregate subqueries. For example:
> SELECT
> @iTOTAL_BAZ = 0,
> @iTOTAL_EKT = 0,
> @iTOTAL_IUS = 0
> SELECT
> @iTOTAL_BAZ = SUM(CASE WHEN B.corpo_id = 'BAZ' THEN 1 ELSE 0
> END),
> @iTOTAL_EKT = SUM(CASE WHEN B.corpo_id = 'EKT' THEN 1 ELSE 0
> END),
> @iTOTAL_IUS = SUM(CASE WHEN B.corpo_id = 'IUS' THEN 1 ELSE 0 END)
> FROM #TMP_UB_TOTGRALBYSIDNID AS A
> LEFT JOIN usr_mines AS B ON A.MINid = B.MIN_id
> WHERE
> A.PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
> A.SID = @CUR_SID AND A.NID = @CUR_NID
> I think you can get the most performance improvement by using a set-
> based
> insert/update instead of a cusor. With Microsoft SQL Server, you
> could
> probably eliminate the temp tables and use techniques like derived
> tables
> but I don't know what you can and can't do in Sybase
>
>>>>>>>>>>>>

>
> (2)Get showplan for the proc and find out if any queries inside the
> proc preforms "Table Scan". You can find showplan for a proc without
> actually executing it by turning "set fmtonly" to on
>
> i am so sorry but i dont understand nothing about this, you mean that
> first i have to avoid cursors and then execute the sp like this:
>
> set fmtonly;
> exec PR_.....
>
> Thank you so much for your help, I really appreciate your time on this.



(1) To get the execution plan odf a stored procedure without actual
execution:

set fmtonly on
go
set showplan on
go
exec <stored procedure arguments-as-needed>
go

(2) Case statements have been in ASE for quite a while. SQL derived tables
(AKA in-line views) came with 12.5.3.

(3) Although similar, what's good for MS SQL Server may not be good for
Sybase ASE and vice versa.


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:18 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145