Autor Téma: Optimalizácia Query  (Přečteno 300 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Optimalizácia Query
« Odpověď #15 kdy: 27-09-2020, 12:25:27 »
Píšeš, že tabulka má 3,5 milionu záznamů. Všechny jsou v tom tebou zjišťovaném období v roce 2016?
Je v tabulce index na DEPOSITPERIOD? Použila Interbase zmiňovaný index v tom dotazu nebo procházi scanem všechny záznamy?
.
Děláme s MS SQL a desítky milionů záznamů v tabulkách nejsou nic výjimečného. Občas se setkáme s tím, že si to MS SQL optimalizátor si vyhodnotí dotaz "divně" a je třeba mu index v SQL vnutit pomocí WITH. Pak zpracování dotazu místo minuty proběhne v řádu sekund.
Ide o generované testovacie údaje. V tomto prípade sa prechádza celá tabuľka
Všetky údaje patria do roku 2016
Áno, ten index mám
.
Teraz mi ten dopyt zbehne za 6-7 sekúnd. S tým som spokojný, lebo sa spúšťa len pri štarte aplikácie. Ostatné existujúce volania tohto dopytu som už odstránil.
Pochopením toho čom mám k dispozícii a doplnením poľa do jednej krátkej tabuľky.
.
Pri daných vygenerovaných údajoch (nie vždy mám dodržané správne väzby medzi tabuľkami - cudzie kľúče + plus k tomu nejaká podmienka) sa mi jednotlivé formuláre otvárajú rádovo 0 až 3,5 sekundy. Čo je oproti pôvodnému stavu vynikajúci výsledok.
.
Až na dve výnimky s 11 a 6 sekundami. To je dané skutočnosťou, že na prvom používam dva a druhom jeden podformulár, kde generujem 3 (druhy) * 10 * 5 komponentov. Jeden z nich je ComboBox a tým napĺňam Items. Možnože pri tom napĺňaní mám medzeru ???  To mi  žerie najviac času.
.
Už nemám čo riešiť. Ak sa program dostane von, tak k tak veľkému naplneniu tabuľky určite nedôjde.
Počet záznamov tej dlhej tabuľky je daný vzorcom: pre jeden mesiac = počet všetkých bytov * počet služeb. Ja mám teraz 31 služieb. V praxi ich bude určite menej. Tak 20 - 25.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Optimalizácia Query
« Odpověď #16 kdy: 27-09-2020, 12:46:09 »
Ešte dopĺňam, že dáta som generoval pre 100 SVB a každé má 320 bytov. Ak zoberieme 3 obyvateľov na jeden byt, tak to 960 000 ľudí. Takých miest máme len pár. Pričom počet obyvateľom môjho mesta je 33 860 ;D . Je jasné, že taký zákazník sa nikdy nenájde.
Pri generovaní predpisov, to je tých 3,5 mil, mi generátor skolaboval. Malo ich byť okolo 6,4 mil.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.