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

Oracle ROWID jako parametr funkce/procedury

Z průvodce koncepty :

Hlavní nevýhodou ROWID je, že i když je normálně stabilní, může se za určitých okolností změnit:

  • Tabulka je znovu sestavena (ALTER TABLE MOVE ...)
  • Samozřejmě export/import
  • Tabulka oddílů s povoleným pohybem řádků

Primární klíč identifikuje řádek logicky , vždy najdete správný řádek, a to i po smazání+vložení. ROWID identifikuje řádek fyzicky a není tak perzistentní jako primární klíč.

ROWID můžete bezpečně použít v jediném příkazu SQL, protože Oracle zaručí, že výsledek bude koherentní, například k odstranění duplikátů v tabulce. Pro jistotu bych vám doporučil používat pouze ROWID napříč příkazy když máte na řádku zámek (SELECT ... FOR UPDATE).

Z hlediska výkonu je přístup s primárním klíčem o něco dražší, ale obvykle si toho všimnete pouze tehdy, pokud provádíte mnoho přístupů na jeden řádek. Pokud je však výkon kritický, obvykle můžete v takovém případě získat větší užitek z použití zpracování sady než zpracování jednoho řádku s rowid. Zejména pokud je mezi DB a aplikací mnoho zpátečních cest, náklady na přístup k řádkům budou pravděpodobně zanedbatelné ve srovnání s náklady na zpáteční cesty.




  1. Objevuje se ve všech operacích (rozdělení sady?) zabudovaných do MySQL?

  2. Aktualizujte tabulku z jiné tabulky v oracle

  3. Volání členské funkce real_escape_string() na neobjektu

  4. Snažíte se získat výsledek v jednom řádku pomocí sql?