Autor Téma: Select so subselectom s rovnakým poradím polí. Má to význam?  (Přečteno 142 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3001
  • Karma: 29
    • Verze Delphi: XE7 professional
Taká primitívna otázka:
Má nejaký praktický význam uvádzať polia v rovnakom poradí? Tak laicky si myslím, že to sa môže prejaviť akurát pri parsovaní SQL textu, čo je prakticky o ničom.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Hrdina
  • ****
  • Příspěvků: 287
  • Karma: 17
    • Verze Delphi: 10.2
Excellent
Rated 1 time
Asi to bude přehlednější, až se v tom dotazu jednou budou dělat nějaké změny.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 439
  • Karma: 23
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Taká primitívna otázka:
Má nejaký praktický význam uvádzať polia v rovnakom poradí? Tak laicky si myslím, že to sa môže prejaviť akurát pri parsovaní SQL textu, čo je prakticky o ničom.

Tomu nerozumim. Co je mysleno polem? Sloupec v SQL prikazu?
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3001
  • Karma: 29
    • Verze Delphi: XE7 professional
Príklady
Rovnaké poradie

Kód: [Vybrat]
SELECT A.A, A.B, A.C
FROM
  (SELECT MYTABLE.A, MYTABLE.B, MYTABLE.C
  FROM MYTABLE) A
Náhodné poradie
Kód: [Vybrat]
SELECT A.A, A.B, A.C
FROM
  (SELECT MYTABLE.C, MYTABLE.B, MYTABLE.A
  FROM MYTABLE) A
Citace
Tomu nerozumim. Co je mysleno polem? Sloupec v SQL prikazu?
Áno. Všade to tak nazývajú.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 439
  • Karma: 23
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Príklady
Rovnaké poradie

Kód: [Vybrat]
SELECT A.A, A.B, A.C
FROM
  (SELECT MYTABLE.A, MYTABLE.B, MYTABLE.C
  FROM MYTABLE) A
Náhodné poradie
Kód: [Vybrat]
SELECT A.A, A.B, A.C
FROM
  (SELECT MYTABLE.C, MYTABLE.B, MYTABLE.A
  FROM MYTABLE) A
Citace
Tomu nerozumim. Co je mysleno polem? Sloupec v SQL prikazu?
Áno. Všade to tak nazývajú.

Ja mel zrovna na mysli perzistentni pole objektu datasetu :) Prakticky vyznam, asi ta prehlednost jak uz psal vandrovnik. Technicky bude IMHO ten subselect u vsech DBMS stejne povazovany za dataset a ten vnejsi select za "pohled" na nej.
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 56
  • Karma: 5
    • Verze Delphi: 2010
Podľa mňa to má význam. Nielen - ako píše Vandrovník - kvoli prehľadnosti, ale aj kvoli rýchlosti, či už čítania ale aj kvoli zápisu.
Ja pri zmene štruktúry tabuľky posúvam pridané stlpce na pozíciu, kde logicky patria (či už vo FB alebo v MySQL).
Pokiaľ ten select púšťaš na nejakú prcatú tabuľku, tak ti to môže byť šumafuk. Ak potrebuješ dáta zobraziť v poprehadzovanom
poradí v dbgride, tam to dáva zmysel. Ak by si však robil opakované selecty na tabuľke trebárs s 300 000 záznamami, tak tam by si už podľa mňa rozdiel v rýchlosti videl.
Odporúčam urobiť testovaciu tabuľku, resp. určite nejakú takú tabuľku s veľkým množstvom záznamov v niektorej databáze máš a zmerať čas.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 439
  • Karma: 23
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Podľa mňa to má význam. Nielen - ako píše Vandrovník - kvoli prehľadnosti, ale aj kvoli rýchlosti, či už čítania ale aj kvoli zápisu.
Ja pri zmene štruktúry tabuľky posúvam pridané stlpce na pozíciu, kde logicky patria (či už vo FB alebo v MySQL).
Pokiaľ ten select púšťaš na nejakú prcatú tabuľku, tak ti to môže byť šumafuk. Ak potrebuješ dáta zobraziť v poprehadzovanom
poradí v dbgride, tam to dáva zmysel. Ak by si však robil opakované selecty na tabuľke trebárs s 300 000 záznamami, tak tam by si už podľa mňa rozdiel v rýchlosti videl.
Odporúčam urobiť testovaciu tabuľku, resp. určite nejakú takú tabuľku s veľkým množstvom záznamov v niektorej databáze máš a zmerať čas.

Proc by DBMS pro kazdy radek presouval data (sloupce) z vnitniho pro vnejsi select list? Tady zaznamy podle me nehraji vubec zadnou roli. Na strane klienta to bude nejspis podobne. Napr. zmineny DB grid jen ukazuje na zdrojovy sloupec a z nej se z resultsetu pristupuje k hodnotam.
« Poslední změna: 07-12-2017, 17:42:08 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Ján Masaryk

  • Mladík
  • **
  • Příspěvků: 56
  • Karma: 5
    • Verze Delphi: 2010
Nedalo mi to a otestoval som to.
Máš pravdu (Delfin) rozdiely na selecte sú minimálne. Skúšal som to na nanovo skopírovanej databáze, resp. s reštartovaným FB servrom, aby som zabránil použitiu cache.

To Stano:

To čo si napísal, ako akože "vnorený select"

Kód: [Vybrat]
SELECT A.A, A.B, A.C
FROM
  (SELECT MYTABLE.A, MYTABLE.B, MYTABLE.C
  FROM MYTABLE) A

sa dá napísať aj takto a "trochu" zrozumiteľnejšie

Kód: [Vybrat]
SELECT A.A, A.B, A.C  FROM MYTABLE A

Skúšal som obe varianty a výsledok bol rovnaký  ;)
« Poslední změna: 07-12-2017, 20:15:33 od Ján Masaryk »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3001
  • Karma: 29
    • Verze Delphi: XE7 professional
Citace
sa dá napísať aj takto a "trochu" zrozumiteľnejšie
To bol príklad. Tých polí je tam viac aj s agregačnými funkciami. A tiež zvyknem mať aj viac úrovní subselectov.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 439
  • Karma: 23
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Citace
sa dá napísať aj takto a "trochu" zrozumiteľnejšie
To bol príklad. Tých polí je tam viac aj s agregačnými funkciami. A tiež zvyknem mať aj viac úrovní subselectov.

Pro DBMS to bude IMHO interne porad jen dataset (slozeny ze sloupcu vice tabulek napr. v pripade JOINu) nad kterym bude vnejsi SELECT tvorit "pohled". Alespon tak bych to cekal, mozna to DBMS v realu implementuji jinak... Vic nez tu prehlednost bych asi neresil. Syntakticky je to spravne a pokud je ma teorie spravna, jsem celkem skepticky o "idealni" optimalizaci hledani prehazenych sloupcu takoveho "pohledu" nad "datasetem". Navic se priprava datasetu deje jen jednou pro cely resultset (kde datasetem myslim "objekt" ktery popisuje sloupce a dokaze pristupovat k zaznamum; resultsetem pak jen zaznamy).
« Poslední změna: 07-12-2017, 23:30:28 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

 

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

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: