2016-12-23 4 views
0

Ich habe ein Problem mit MySQL-Abfrage. Es ist zu langsam um 101 Sekunden für begrenzte 10 Zeilen. Was könnte das Problem sein?MySQL-Abfrage zu langsam für begrenzte Zeile

Abfrage ist:

SELECT isteksikayet.BASVURU_NO AS BasvuruNo, isteksikayet.BASVURU_TARIHI AS BasvuruTarihi, mahalle.ad AS MahalleAdi, konular.ADI AS KonuAdi, 
sonucturleri.ADI AS Durum, isteksikayetdetay.GUNCELLEME_TARIHI AS BilgiTarihi, birimler.ad AS BirimAdi 

FROM isb_istek_sikayet isteksikayet 
INNER JOIN tbl_sistem_mahalle mahalle 
ON isteksikayet.MAHALLE_KODU = mahalle.kod 
INNER JOIN isb_konular konular 
ON isteksikayet.KONU_KODU = konular.KODU 
INNER JOIN isb_istek_sikayet_detay isteksikayetdetay 
ON isteksikayet.BASVURU_NO = isteksikayetdetay.BASVURU_NO 
INNER JOIN isb_sonuc_turleri sonucturleri 
ON isteksikayetdetay.SONUC_KODU = sonucturleri.KODU 
INNER JOIN mubim_birim birimler 
ON isteksikayetdetay.DAIRE_KODU = birimler.kod 
ORDER BY BasvuruNo DESC LIMIT 10; 
+0

Um die anzuzeigenden Datensätze zu ermitteln, muss die DB alle durchlaufen, weil Sie sie bestellen –

+0

Haben Sie Indizes in den Join-Spalten eingerichtet? –

+0

@juergend Wie kann ich das beheben? Ich kann keine Erlaubnis zum Zufall db Struktur haben. –

Antwort

1

Es stimmt, dass die Abfrage nur 10 Zeile zurückgibt, aber es hat alle Zeilen eines sechs Tabellen bestellen join, kann dies sehr schnell (wie es wachsen außer Kontrolle geraten bereits auf Ihrer Datenbank).

Um dies zu vermeiden, würde ich vorschlagen, NUR die Tabelle mit der Spalte BasvuruNo zu bestellen und die ersten 10 Datensätze in einer Unterabfrage zu extrahieren und erst dann mit den restlichen Tabellen zu verbinden. Auf diese Weise sollten Sie vermeiden, eine überwältigende Menge an Datensätzen zu bestellen