Witam wszystkich,
mam pytanie czy można zoptymalizować zapytanie:
SELECT field1 field2 field3 FROM database INTO CORRESPONDING FIELDS OF TABLE it_data
WHERE field4 = iv_par1 AND field5 = iv_par2.
Przykładowa tabela "database" zawiera jedno pole kluczowe "field1"
SELECT field1 field2 FROM database - jak zoptymalizować
-
- Posty: 8168
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1830 times
- Been thanked: 1431 times
Re: SELECT field1 field2 FROM database - jak zoptymalizować
Początkowo pomyślałem o wyeliminowaniu INTO CORRESPONDING FIELDS OF TABLE, gdyż mówi się, że taka konstrukcja ma słabą wydajność. Znalazłem jednak artykuł, który obala ten mit Why “INTO CORRESPONDING” is much better than its reputation
Druga kwestia to kryteria w WHERE, gdzie nie ma klucza. Zatem selekcja będzie wymagała pełnego skanu tabeli, który może potrwać jeśli tablica DATABASE jest duża. Wtedy warto zrobić indeks z polami field4 i field5. Temat indeksu trzeba dobrze przemyśleć, bo jego utrzymanie negatywnie wpływa na operacje zmiany danych w tabeli - baza danych musi aktualizować indeks. Indeks ma sens jeśli tabela jest duża, a zapytanie będziesz wykonywać często.
Druga kwestia to kryteria w WHERE, gdzie nie ma klucza. Zatem selekcja będzie wymagała pełnego skanu tabeli, który może potrwać jeśli tablica DATABASE jest duża. Wtedy warto zrobić indeks z polami field4 i field5. Temat indeksu trzeba dobrze przemyśleć, bo jego utrzymanie negatywnie wpływa na operacje zmiany danych w tabeli - baza danych musi aktualizować indeks. Indeks ma sens jeśli tabela jest duża, a zapytanie będziesz wykonywać często.
-
- Posty: 170
- Rejestracja: czw kwie 23, 2009 9:22 am
- Has thanked: 13 times
- Been thanked: 12 times
Re: SELECT field1 field2 FROM database - jak zoptymalizować
Dzięki za odpowiedź, wspomniany przez Ciebie indeks już istnieje. Tabela jest duża i często używana przez co zaczęły pojawiać się problem z wydajnością zapytania.
-
- Posty: 8168
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1830 times
- Been thanked: 1431 times
Re: SELECT field1 field2 FROM database - jak zoptymalizować
Skoro tak to wiele już nie zdziałasz. Może spróbuj odchudzić tę tabelę poprzez archiwizację jeśli to jest standardowa tabela lub wprost skasowanie niepotrzebnych danych historycznych.
-
- Posty: 57
- Rejestracja: czw maja 23, 2013 6:49 pm
- Has thanked: 21 times
- Been thanked: 14 times
Re: SELECT field1 field2 FROM database - jak zoptymalizować
jeszcze warto zwrócić uwagę na kontekst wywołania, czy ten select jest wywoływany 1 raz w programie czy kilkakrotnie np. w jakiś pętlach etc.
Re: SELECT field1 field2 FROM database - jak zoptymalizować
Może pokusił bym się o jeśli to HDB...
Kod: Zaznacz cały
ORDER BY PRIMARY KEY
SAP ABAP Certified Developer