Używanie SQL jako gloryfikowanego pakietu ISAM (Indexed Sequential Access Method). W szczególności zagnieżdżanie kursorów zamiast łączenia instrukcji SQL w jedną, choć większą, instrukcję. Jest to również liczone jako „nadużycie optymalizatora”, ponieważ tak naprawdę niewiele można zrobić. Można to połączyć z nieprzygotowanymi oświadczeniami dla maksymalnej nieefektywności:
DECLARE c1 CURSOR FOR SELECT Col1, Col2, Col3 FROM Table1
FOREACH c1 INTO a.col1, a.col2, a.col3
DECLARE c2 CURSOR FOR
SELECT Item1, Item2, Item3
FROM Table2
WHERE Table2.Item1 = a.col2
FOREACH c2 INTO b.item1, b.item2, b.item3
...process data from records a and b...
END FOREACH
END FOREACH
Prawidłowym rozwiązaniem (prawie zawsze) jest połączenie dwóch instrukcji SELECT w jedną:
DECLARE c1 CURSOR FOR
SELECT Col1, Col2, Col3, Item1, Item2, Item3
FROM Table1, Table2
WHERE Table2.Item1 = Table1.Col2
-- ORDER BY Table1.Col1, Table2.Item1
FOREACH c1 INTO a.col1, a.col2, a.col3, b.item1, b.item2, b.item3
...process data from records a and b...
END FOREACH
Jedyną zaletą wersji z podwójną pętlą jest to, że można łatwo dostrzec przerwy między wartościami w tabeli 1, ponieważ pętla wewnętrzna się kończy. Może to być czynnikiem w raportach z łamaniem kontroli.
Ponadto sortowanie w aplikacji jest zwykle nie-nie.