Autor Téma: Opakovaný výraz, alebo subselect? Čo je vhodnejšie?  (Přečteno 545 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3446
  • Karma: 35
    • Verze Delphi: XE7 professional
Opakovaný výraz
Kód: [Vybrat]
SELECT CASE... / COSI, A.FIELD2, CASE... * NIECO, A.FIELDN
FROM TABLE1 A....
Použitie subselectu
Kód: [Vybrat]
SELECT B.FIELD1 / COSI,  A.FIELD2, B.FIELD1 * NIECO, A.FIELDN
FROM TABLE1 A ...
  INNER JOIN
    (SELECT CASE
      FROM TABLE1 ...) B ON (... = ...)
Ja sa prikláňam k subselectu. Živočíšne predpokladám, že viacnásobné vyhodnocovanie tej istej podmienky je náročnejšie než použitie subselectu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Guru
  • *****
  • Příspěvků: 1117
  • Karma: 52
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Opakovaný výraz, alebo subselect? Čo je vhodnejšie?
« Odpověď #1 kdy: 01-02-2018, 08:57:54 »
Opakovaný výraz
Kód: [Vybrat]
SELECT CASE... / COSI, A.FIELD2, CASE... * NIECO, A.FIELDN
FROM TABLE1 A....
Použitie subselectu
Kód: [Vybrat]
SELECT B.FIELD1 / COSI,  A.FIELD2, B.FIELD1 * NIECO, A.FIELDN
FROM TABLE1 A ...
  INNER JOIN
    (SELECT CASE
      FROM TABLE1 ...) B ON (... = ...)
Ja sa prikláňam k subselectu. Živočíšne predpokladám, že viacnásobné vyhodnocovanie tej istej podmienky je náročnejšie než použitie subselectu.

Osobne bych souhlasil a rekl ze ten subselect. Ale jen pokud bude ten spojovany resultset materializovany, tj. pokud jej DBMS ulozi do pameti jako limitovanou sadu zaznamu a nebude jej opakovane skladat (coz bych necekal). Pokud by materializovany nebyl a skladal by se opakovane, dochazelo by k vyhodnocovani vyrazu stejne jako v pripade CASE v SELECT listu z prvniho prikladu.
« Poslední změna: 01-02-2018, 09:00:17 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2219
  • Karma: 117
    • Verze Delphi: D2007, XE3, DX10
Re:Opakovaný výraz, alebo subselect? Čo je vhodnejšie?
« Odpověď #2 kdy: 01-02-2018, 09:06:12 »
Opakovaný výraz
Kód: [Vybrat]
SELECT CASE... / COSI, A.FIELD2, CASE... * NIECO, A.FIELDN
FROM TABLE1 A....
Tomu mam rozumet tak, ze na strane klienta udelas iteraci a v kazdem pruchodu spustis SELECT? Pokud ano, tak to pravdepodobne bude horsi min. kvuli dopravnim zpozdenim pri komunikaci s DB. Ale pokud by to bylo v SP, tak uz bych to zkusil a zmeril.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3446
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Opakovaný výraz, alebo subselect? Čo je vhodnejšie?
« Odpověď #3 kdy: 01-02-2018, 09:15:42 »
Citace
Tomu mam rozumet tak, ze na strane klienta udelas iteraci a v kazdem pruchodu spustis SELECT?
Nie, to SQL spúšťam len jediný raz. Ten Select je výberová množina pre "INSERT INTO ... SELECT ..." Cyklom sa vyhýbam ako sa len dá.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):