Příliš dlouhý SELECT

Smokie

Příliš dlouhý SELECT
« kdy: 29. 03. 2011, 16:56:09 »
Zdravim,
mam problem. Mam SELECT, ktory spaja 8 tabuliek a vo vysledku ma asi okolo 200 stlpcov. Viem, ze je to vela, ale bohuzial nie je ine riesenie.

Na localhoste nie je problem, ale na hostingu takyto SELECT uz nefunguje, pretoze
Kód: [Vybrat]
#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Skusil som to nastavit pred vytvorenim tohto SELECTU, ale nepomohlo to.

Nenapada niekoho riesenie?

Dakujem
« Poslední změna: 29. 03. 2011, 19:48:44 od Petr Krčmář »


dvdmchl

Re: Prilis dlhy SELECT
« Odpověď #1 kdy: 29. 03. 2011, 17:08:37 »
Jestli SQL server umoznuje, tak vytvorit nekolik docasnych tabulek a pak delat select nad nimi.

xdxd

Re: Prilis dlhy SELECT
« Odpověď #2 kdy: 29. 03. 2011, 17:50:29 »
najpr vybrat stlpce a potom spajat tabulky? ale nerobim s tym tak neviem

BenderTheOffender

Re: Prilis dlhy SELECT
« Odpověď #3 kdy: 29. 03. 2011, 18:08:52 »
Je to celkom logicke. Provide nechce usmazit databazu prasiackymi Selectami. Skor ma zaraza naco je nutne zobrazit 200 stlpcov. Nie je mozne spravit 8 pod selectov a ako zdroj dat brat ID z nejakeho master selectu?

Smokie

Re: Prilis dlhy SELECT
« Odpověď #4 kdy: 29. 03. 2011, 18:20:48 »
Je to celkom logicke. Provide nechce usmazit databazu prasiackymi Selectami. Skor ma zaraza naco je nutne zobrazit 200 stlpcov. Nie je mozne spravit 8 pod selectov a ako zdroj dat brat ID z nejakeho master selectu?
Viem, ze je to logicke. Ale okolnosti si takyto prasacky select vyzaduju (poziadavky zakaznika a nizka odmena). Je to tabulka s udajmi vo velmi obsirnych a detailnych zivotopisoch, cize preto take mnozstvo stlpcov.

Skusal som nerobit VIEW, ale len SELECT, ale ani to mi nevzalo. Problem je ten maximalny pocet tabuliek, pretoze som sa pokusil tiez znizit pocet stlpcov tym, ze som concatoval tie, ktore sa iterovali (napr. jazyk1, jazyk2,... relacna tabulka tu neprichadza do uvahy) a neviedlo to nikam (pricom som znizil pocet o cca 85 stlpcov).

Tiez som rozmyslal nad docasnymi tabulkami, ale bojim sa, ze by som opat narazil na problem s MAX_SELECT_SIZE. Ten nepusti a je nastaveny na 1 MB a tak rozmyslam ci vobec ma tento problem za tychto okolnosti riesenie.


Kit

Re: Prilis dlhy SELECT
« Odpověď #5 kdy: 29. 03. 2011, 20:41:33 »
... Ale okolnosti si takyto prasacky select vyzaduju (poziadavky zakaznika a nizka odmena). Je to tabulka s udajmi vo velmi obsirnych a detailnych zivotopisoch, cize preto take mnozstvo stlpcov.
To zní skoro jako požadavek na školní matriku. Podle mne to chce spíš nějakou dokumentově orientovanou databázi než SQL. Nebo alespoň pořádně denormalizovat.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: Příliš dlouhý SELECT
« Odpověď #6 kdy: 29. 03. 2011, 21:51:28 »
Jestli je problémem počet tabulek, tak prostě vytvoř selectem ze čtyř tabulek jednu temporary a tu pak joinuj....

devnull

Re: Příliš dlouhý SELECT
« Odpověď #7 kdy: 30. 03. 2011, 00:05:21 »
Joinovat 8 tabulek podle me problem neni - spis bych cekal ze tam bude nejak spatne napsanej JOIN a bude to plodit strasne mnozstvi radku - jako treba preklep v nazvu tabulky nebo tak (t1 INNER JOIN t2 ON t1.id = t1.id )

Smokie

Re: Příliš dlouhý SELECT
« Odpověď #8 kdy: 30. 03. 2011, 00:46:43 »
Joinovat 8 tabulek podle me problem neni - spis bych cekal ze tam bude nejak spatne napsanej JOIN a bude to plodit strasne mnozstvi radku - jako treba preklep v nazvu tabulky nebo tak (t1 INNER JOIN t2 ON t1.id = t1.id )
Joinovat 8 tabuliek problem naozaj nie je, pretoze na localhoste to bezi. Nie je ani preklep v nazve tabulky alebo podobny preklep ako si uviedol.

Smokie

Re: Příliš dlouhý SELECT
« Odpověď #9 kdy: 30. 03. 2011, 00:47:16 »
Jestli je problémem počet tabulek, tak prostě vytvoř selectem ze čtyř tabulek jednu temporary a tu pak joinuj....
Vyskusam to.

devnull

Re: Příliš dlouhý SELECT
« Odpověď #10 kdy: 30. 03. 2011, 00:51:17 »
A
show variables like 'MAX_JOIN_SIZE%'
ti na hostingu/localhostu vraci co?

Smokie

Re: Příliš dlouhý SELECT
« Odpověď #11 kdy: 30. 03. 2011, 07:39:14 »
A
show variables like 'MAX_JOIN_SIZE%'
ti na hostingu/localhostu vraci co?
localhost: 18446744073709551615
hosting: 1000000

Ked ten VIEW mam rozdeleny na dve casti, tak to ide, problem nie je. Uz len musim vymysliet ako to vo vysledku "spojit".

Smokie

Re: Příliš dlouhý SELECT
« Odpověď #12 kdy: 30. 03. 2011, 07:48:51 »
Ale to by mohlo ist prave cez tie temporary tables, musim to vyskusat.