SQL sorğuların sürətləndirilməsi

SQL sorğuların maksimum sürətli işləməsi üçün nə etmək olar? Unique indexlər yaratmışam, o qədər də xeyri olmayıb


Yadda saxlama
Kateqoriya: Proqramlaşdırma . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (11 cavab var)

(18:35, 05/09/2011 ) #3683

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

(00:20, 06/09/2011 ) #3689

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

(00:40, 06/09/2011 ) #3690

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

    (16:01, 06/09/2011 ) #3704

    Burda əsas problem bind variable istifadə etməməkdir. Selecti bind variable ilə aşağıdakı yazın, performans artacaq.

    SELECT sum(sutun1) FROM tablename where setirkod='1' and kodarazi=:rayon_kodu
    

    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:

    SELECT kodarazi, sum(sutun1) 
    FROM tablename 
    where setirkod='1' 
    group by kodarazi
    
    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(01:23, 06/09/2011 ) #3691

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.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(09:21, 06/09/2011 ) #3693
Create view test as select * from tablename

daha sonra sql də cədvəl adının yerinə test yazmalıyam?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(09:45, 06/09/2011 ) #3694

MySQL-in dokumentasiyasında da baxa bilərsiniz bu mövzuya.
http://dev.mysql.com/doc/refman/5.5/en/optimization.html

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(21:46, 06/09/2011 ) #3711

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

(11:02, 07/09/2011 ) #3719

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 🙂

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (01:15, 11/09/2011 ) #3781

    Buyurun, xoşdur.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(22:44, 08/09/2011 ) #3745

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

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (5 saat əvvəl)

Triste cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Software Developer cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Triste cavab verdi - Google Adsense vergi (6 gün əvvəl)

E. Hacı cavab verdi - Xif mn kodu (14 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (33 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (40 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (45 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (54 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (58 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (62 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23288 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024