Używając select *
w twoim kodzie jest to, co nazwałbym programowaniem leniwym, z kilkoma nieprzyjemnymi skutkami ubocznymi. To, jak bardzo doświadczasz tych skutków ubocznych, będzie się różnić, ale nigdy nie jest pozytywne.
Wykorzystam niektóre z punktów już wspomnianych w innych odpowiedziach, ale możesz edytować moją odpowiedź i dodać więcej negatywnych punktów dotyczących używania select *
.
-
Wysyłasz więcej danych z silnika SQL do swojego kodu niż to konieczne, co ma negatywny wpływ na wydajność.
-
Informacje, które otrzymujesz, muszą być umieszczone w zmiennych (na przykład zmiennej rekordu). Zajmie to więcej pamięci PGA niż to konieczne.
-
Używając
select *
nigdy nie użyjesz samego indeksu do pobrania potrzebnych informacji, zawsze będziesz musiał również odwiedzić tabelę (pod warunkiem, że nie istnieje indeks, który zawiera wszystkie kolumny tabeli). Ponownie, z negatywnym wpływem na wydajność. -
Mniej jasne dla osób utrzymujących Twój kod, jakie są Twoje zamiary. Muszą zagłębić się w kod, aby wykryć wszystkie wystąpienia zmiennej rekordu, aby wiedzieć, co jest pobierane.
-
Nie będziesz używać funkcji SQL do wykonywania obliczeń, ale zawsze polegaj na obliczeniach PL/SQL lub Java. Prawdopodobnie brakuje Ci wspaniałych ulepszeń SQL, takich jak funkcje analityczne, klauzula modelu, rekurencyjne faktoring podzapytań i tym podobne.
-
Począwszy od Oracle11, zależności są śledzone na poziomie kolumny, co oznacza, że gdy używasz
select *
, Twój kod jest oznaczany w słowniku danych jako „zależny od wszystkich kolumn” tej tabeli. Twoja procedura zostanie unieważniona, gdy coś stanie się z jedną z tych kolumn. Tak więc użycie select * oznacza, że Twój kod będzie unieważniany częściej niż to konieczne.
Ponownie możesz dodawać własne punkty.