SELECT field1 field2 FROM database - jak zoptymalizować

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
arnonim
Posty: 170
Rejestracja: czw kwie 23, 2009 9:22 am
Has thanked: 13 times
Been thanked: 12 times

SELECT field1 field2 FROM database - jak zoptymalizować

Post autor: arnonim »

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"
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SELECT field1 field2 FROM database - jak zoptymalizować

Post autor: dominik.tylczynski »

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.
arnonim
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ć

Post autor: arnonim »

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.
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SELECT field1 field2 FROM database - jak zoptymalizować

Post autor: dominik.tylczynski »

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.
DenzelWaszyngton
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ć

Post autor: DenzelWaszyngton »

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.
K602
Posty: 135
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 60 times
Been thanked: 86 times
Kontakt:

Re: SELECT field1 field2 FROM database - jak zoptymalizować

Post autor: K602 »

Może pokusił bym się o

Kod: Zaznacz cały

ORDER BY PRIMARY KEY
jeśli to HDB...
SAP ABAP Certified Developer
ODPOWIEDZ