Set nocount untuk optimasi Stored Procedures SQL Server Juli 4, 2008
Posted by Hariesya Ivan in Database.trackback
Stored procedures dalam SQL server 2000 itu ada 2 macam yaitu system stored procedures dan user stored procedures. User stored procedures terbagi lagi menjadi 3 bagian yaitu :
1. User Defined stored procedures
2. Trigger
3. User defined function
Saya tidak akan membahas mengenai pengertian masing-masing stored procedures diatas, namun saya mencoba memberikan salah satu cara untuk optimasi performance dalam eksekusi stored procedures yaitu dengan menggunakan “Set nocount on”.
Kalo kita jalankan query dengan menggunakan query analyzer sebagai contoh :
SELECT * FROM authors
Message:
(1 row(s) affected)
maka akan selalu muncul pesan statistik berapa banyak jumlah row dari hasil query, didalam stored procedures terutama yang kompleks akan banyak pesan statistik yang di munculkan. Hal ini tentu saja akan menambah waktu proses dan bandwith di jaringan. Oleh sebab itu maka menonaktifkan pesan statistik ini dapat mengurangi proses yg tidak dibutuhkan sehingga performance dari stored procedures akan lebih baik.
create procedure test_coy
as
begin
declare @i int
create table test_coy_table (
testID int, [user] varchar (50), description varchar(100) )
set @i = 0
while @i < 1000
begin
set @i= @i + 1
insert into test_coy_table (testid,[user]) values(@i, ‘user ‘ + cast(@i as varchar(3)))
end
select * from test_coy_table
end
exec test_coy
message:
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
.
.
(1000 row(s) affected)
Contoh pemakaian set nocount :
alter procedure test_coy
as
begin
set nocount on
declare @i int
create table test_coy_table (
testID int, [user] varchar (50), description varchar(100) )
set @i = 0
while @i < 1000
begin
set @i= @i + 1
insert into test_coy_table (testid,[user]) values(@i, ‘user ‘ + cast(@i as varchar(3)))
end
select * from test_coy_table
end
exec test_coy
message:
sya.punya query:
select a.berita_id,a.judul,a.berita,coaleske(count(b.komentar_id),0)as total_komentar
from berita a,komentar b
where a.berita_id=b.berita_id(+)
group by a.berita_id,a.judul,a.berita
order by berita_id desc;
nah query diatas kalo dirubah ke bntuk subquery gmn sntak nya? sya pngen bndgin cost nya! trus ad g referensi yg ngebahas cara ngitung cost dr query yg dieksekusi? dan komponen harga utk eksekusi query, sprti access cost, storage cost?