sql >> Databáze >  >> RDS >> Oracle

Je použití select * pro kurzor v PL/SQL považováno za špatné programování?

Pomocí select * ve vašem kódu je to, co bych nazval líné programování, s několika nepříjemnými vedlejšími účinky. Jak moc tyto vedlejší účinky pociťujete, se bude lišit, ale nikdy to není pozitivní.

Použiji některé z bodů již zmíněných v jiných odpovědích, ale neváhejte svou odpověď upravit a přidat další negativní body týkající se použití select * .

  1. Odesíláte do svého kódu více dat z enginu SQL, než je nutné, což má negativní vliv na výkon.

  2. Informace, které získáte zpět, je třeba umístit do proměnných (například proměnná záznamu). To zabere více paměti PGA, než je nutné.

  3. Pomocí select * nikdy nepoužijete k získání požadovaných informací samotný index, vždy budete muset navštívit i tabulku (za předpokladu, že neexistuje žádný index, který by obsahoval všechny sloupce tabulky). Opět s negativním vlivem na výkon.

  4. Méně jasné pro lidi udržující váš kód, jaký je váš záměr. Musí se ponořit do kódu, aby odhalili všechny výskyty vaší proměnné záznamu, aby věděli, co se načítá.

  5. K provádění výpočtů nebudete používat funkce SQL, ale vždy se spolehněte na výpočty PL/SQL nebo Java. Možná přicházíte o některá skvělá vylepšení SQL, jako jsou analytické funkce, modelová klauzule, rekurzivní faktoring poddotazů a podobně.

  6. Od Oracle11 dále jsou závislosti sledovány na úrovni sloupců, což znamená, že když použijete select * , váš kód je v datovém slovníku označen jako „závislý na všech sloupcích“ této tabulky. Váš postup bude zrušen, když se s jedním z těchto sloupců něco stane. Takže použití select * znamená, že váš kód bude zneplatněn častěji, než je nutné.

Opět můžete přidat své vlastní body.



  1. Jak spustit soubor skriptu .SQL pomocí c#

  2. Raw SQL až SQLAlchemy

  3. Existuje vzorec pro odhad velikosti indexu v InnoDB?

  4. Plánování obnovy po havárii pro MySQL a MariaDB