SQL optimallaşdırma üçün xeyli üsullar var. Siz əgər unique sütun təyin edib onu index-ləmisinzə, o halda ola bilər ki query-nin özündə hər hansı problem var. Nümunə query-ni burda yerləşdirin baxıb bir şey demək olar. Sorğuda günah olmasa başqa variantlara baxmaq olar sonra
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır
Verilənlər bazası hansıdır? SQL tuning geniş bir sahədir. Çox faktorlar var:data model, indekslər, join tipi, şərtlər, statistika və s. Daha çox məlumat lazım.
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır
Verilənlər bazası mysql dir. Məndə sql in problemi ondadırki çox sayda sql işləyir. Yəni hər rayona görə nəticələr alıram. Bütün ərazilər üzrə 8 sql 86 dəfə dövr edir, buda 688 sql deməkdir. Sql bu formadadır.
for (Rayon r: rayons){
SELECT sum(sutun1) FROM tablename where setirkod='1' and kodarazi='"+r.getKod()+"'
}
Unique index yaratmaq üçün bu sql i yazmışam
CREATE UNİQUE İNDEX x ON TABLENAME (İD, KODARAZİ, SETİRKOD, İK)
Yazdığım sql lər tam dəqiq deyil, amma oxşardır. Unique indexi mümkün qədər çox sütuna görə yaratmışam. Bu çoxluqda sql in işini sürətləndirmək üçün neyləmək olar?
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır
Ramin Orujov-un yazdigi 2 ci variantla performance xeyli arta biler. siz code logic-de her defe konkret bir qiymet uchun bazaya muraciet olunur ve query icra edilir. Amma, Ramin yazdigi kimi, bir defe sql request verib, result set i database -den goturdukden sonra, alinmish result set uzerinde programda loop icra ede bilersiz. bu xeyli suretli ishlemelidir
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır
Salam.Ramin Orucovun verdiyi GROUP BY variantı bizim üçün ən optimal variantdır.Məndə bu variantdan istifadə edirəm.Mən hətta sətrləidə GROUP BY -ın icinə daxil edirəm.Sonra alınan nətcəni Array Lİstə yerləşdirib istənilən kimi nəticələr almaq olur.Bir dəki cədvəllərin REFERAN-sındanda istifadə edsəndə sürətə təsir göstərəcək.(əgər sql-ndə bir neçə cədvələ müraciət edirsənsə)
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır
Verilmiş cavablar və yazılan şərhlər (11 cavab var)
1
SQL optimallaşdırma üçün xeyli üsullar var. Siz əgər unique sütun təyin edib onu index-ləmisinzə, o halda ola bilər ki query-nin özündə hər hansı problem var. Nümunə query-ni burda yerləşdirin baxıb bir şey demək olar. Sorğuda günah olmasa başqa variantlara baxmaq olar sonra
3
Verilənlər bazası hansıdır? SQL tuning geniş bir sahədir. Çox faktorlar var:data model, indekslər, join tipi, şərtlər, statistika və s. Daha çox məlumat lazım.
0
Verilənlər bazası mysql dir. Məndə sql in problemi ondadırki çox sayda sql işləyir. Yəni hər rayona görə nəticələr alıram. Bütün ərazilər üzrə 8 sql 86 dəfə dövr edir, buda 688 sql deməkdir. Sql bu formadadır.
Unique index yaratmaq üçün bu sql i yazmışam
Yazdığım sql lər tam dəqiq deyil, amma oxşardır. Unique indexi mümkün qədər çox sütuna görə yaratmışam. Bu çoxluqda sql in işini sürətləndirmək üçün neyləmək olar?
4
Burda əsas problem bind variable istifadə etməməkdir. Selecti bind variable ilə aşağıdakı yazın, performans artacaq.
Bir də başqa təklif var. Əgər bütün rayonlar üçün tək tək sum edib çıxarmaq istəyirsinizsə, onda daha yaxşı yol var:
Belə bir eksperement edə bilərsiniz. Əvvəlcə bir view düzəldin bu SQL ilə.
Sonra viewdan SELECT edin, bu zaman hər dəfə SUM() üçün hesablama getməyəcək.
0
daha sonra sql də cədvəl adının yerinə test yazmalıyam?
1
MySQL-in dokumentasiyasında da baxa bilərsiniz bu mövzuya.
http://dev.mysql.com/doc/refman/5.5/en/optimization.html
Ramin Orujov-un yazdigi 2 ci variantla performance xeyli arta biler. siz code logic-de her defe konkret bir qiymet uchun bazaya muraciet olunur ve query icra edilir. Amma, Ramin yazdigi kimi, bir defe sql request verib, result set i database -den goturdukden sonra, alinmish result set uzerinde programda loop icra ede bilersiz. bu xeyli suretli ishlemelidir
0
Köməyə görə çox sagolun. Ramin müəllim, yazdığınız 2 ci variantla yazdım sql ləri. Həm kod sadələşdi, həm də performansda fərq etdi. Təşəkkürlər 🙂
0
Buyurun, xoşdur.
2
Salam.Ramin Orucovun verdiyi GROUP BY variantı bizim üçün ən optimal variantdır.Məndə bu variantdan istifadə edirəm.Mən hətta sətrləidə GROUP BY -ın icinə daxil edirəm.Sonra alınan nətcəni Array Lİstə yerləşdirib istənilən kimi nəticələr almaq olur.Bir dəki cədvəllərin REFERAN-sındanda istifadə edsəndə sürətə təsir göstərəcək.(əgər sql-ndə bir neçə cədvələ müraciət edirsənsə)
Sual verin
Cavab verin