Találkozott már olyan lekérdezést, hogy az SQL Server nem tudta végrehajtani, mert a hivatkozott túl sok asztal?

szavazat
15

Láttál bármelyik ott hiba üzenet?

- SQL Server 2000

Nem lehet lefoglalni kiegészítő asztal nézet vagy függvény felbontás.
A táblák maximális száma egy lekérdezést (256) túllépése.

- SQL Server 2005

Túl sok táblanevek a lekérdezésben. A megengedett maximális 256.

Ha igen, mit tettél?

Feladta? Győződve arról, az ügyfél, hogy egyszerűsítse az igényeket? Denormalizált az adatbázisban?


@ (Mindenki akarja, hogy tegye a lekérdezés):

  1. Nem tudom, ha én is beilleszthető 70 kilobájt kódot a válasz szerkesztő ablakban.
  2. Még ha tudom ezt ez nem segít, mivel ez a 70 kilobájt kód fog hivatkozni 20 vagy 30 megnézve, hogy én is meg kell küldeni, mert különben a kód lesz értelmetlen.

Nem akarok úgy beszélni, mint én, ahonnan itt, de a probléma nem a lekérdezések. A lekérdezések optimális (vagy legalábbis majdnem optimális). Már hosszú órákat töltött optimalizálva, akik minden egyes oszlopban és minden egyetlen táblázat, amely lehet távolítani. Képzeljünk el egy olyan jelentést, amely 200 vagy 300 oszlopok is fel kell tölteni egy SELECT (mert ez így volt a célja, néhány évvel ezelőtt, amikor még egy kis jelentés).

A kérdést 05/08/2008 15:54
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
8

Az SQL Server 2005, azt javasoljuk asztal változó, és részben az épület az adatokat, ahogy megy.

Ehhez hozzon létre egy táblázatot változó, amely a végső eredmény meg szeretné küldeni a felhasználónak.

Ezután keresse meg a tábla elsődleges (mondjuk a megrendelések táblázat a fenti példában), és húzza, hogy az adatok, plusz egy kis kiegészítő adatok csak mondjuk egy csatlakozzanak el (ügyfél neve, a termék neve). Meg tudod csinálni egy SELECT INTO hogy ezt egyenesen a tábla változó.

Onnan végighaladni az asztalra, és minden sorban, akkor egy csomó kis SELECT lekérdezést, amely beolvassa az összes kiegészítő adatot, amire szükség van az eredmény halmaz. Illessze ezeket be az egyes oszlopokba, ahogy megy.

Ha elkészült, akkor majd nem egy egyszerű SELECT * from asztalnál változó, és visszatér az eredmény beállítása a felhasználó számára.

Nem kell semmilyen kemény számok erre, de már három különböző példányok dolgoztam eddig, ahol csinálnak ezek a kisebb lekérdezések ténylegesen ledolgozott gyorsabb, mint csinál egy hatalmas válasszuk lekérdezés egy csomó csatlakozik.

Válaszolt 05/08/2008 16:19
a forrás felhasználó

szavazat
1

Ez történik minden alkalommal, amikor az írás Reporting Services jelentések Dynamics CRM berendezések futó SQL Server 2000. CRM egy szépen normalizált adatok séma ami sok csatlakozik. Létezik egy gyorsjavítás körül, hogy akarata fel a határ 256-tól egy óriási 260: http://support.microsoft.com/kb/818406 (mi mindig úgy gondoltam, ez egy nagy vicc a részét az SQL Server csapat).

A megoldás, mint Dillie-O aludes, az az, hogy meghatározzák a megfelelő „sub-csatlakozik” (lehetőleg is, hogy több alkalommal használja) és a Faktor ki őket temp-asztal változókat, majd a fő csatlakozik. Ez egy jelentős PIA és gyakran megöli a teljesítményt. Sajnállak.

@Kevin, szeretem, hogy tee - azt mondja, minden :-).

Válaszolt 02/11/2008 16:50
a forrás felhasználó

szavazat
1

@chopeen Meg lehet változtatni a te kiszámításához ezeket a statisztikákat, és ehelyett tartsa külön táblázatban az összes per-termék statisztika .. ha a megrendeléskor, végigjárjuk a termékek és frissíti a megfelelő rekordok a statisztikai táblázatban. Ez meg fog változni sok számítási terhelést a fizetési oldalra futtatása helyett mindent egy hatalmas lekérdezés futtatásakor egy jelentést. Természetesen vannak olyan statisztika, hogy nem fog működni, valamint Így például az vásárlók által a következő vásárlások után vásárol egy adott terméket.

Válaszolt 05/08/2008 16:19
a forrás felhasználó

szavazat
1

Én még soha nem találkoztam ilyen helyzetben, és hogy őszinte legyek az ötlet-e> 256 asztal egy keresett fils rám halálos rettegés.

Az első kérdés valószínűleg a „Miért olyan sok?”, Majd szorosan utána „mi bit információt adhatok NEM kell?” Lennék attól, hogy az adatmennyiség kaptak vissza egy ilyen lekérdezés elkezdi kifejteni hatását az alkalmazás teljesítményét elég súlyosan is.

Válaszolt 05/08/2008 15:57
a forrás felhasználó

szavazat
0

Ugyanez volt a kérdés az SQL Server 2005 (dolgozott 2008), amikor meg akartam nézet létrehozásához. Azt a probléma megoldódott létrehozásával tárolt eljárás, kilátás helyett.

Válaszolt 07/03/2012 16:59
a forrás felhasználó

szavazat
0

Volt ez ugyanaz a probléma ... én fejlesztési csomag fut az SQL Server 2008 (a nézet jól működött), hanem a termelés (az SQL Server 2005) véli, nem. Így végül létre nézeteket, hogy elkerülje ezt a korlátozást, az új nézeteket részeként a lekérdezés a véleményen van, hogy dobta a hibát.

Kicsit buta tekintve logikus végrehajtás ugyanaz ...

Válaszolt 19/08/2010 18:29
a forrás felhasználó

szavazat
0

Hozzászólás a lekérdezés: D

Én is érzem magam, mint a lehetséges problémák merülhetnek fel egy tonna (olvasni 200+) név / érték táblázatok, amelyek sűrített egyetlen keresési táblázat.

Válaszolt 05/08/2008 16:26
a forrás felhasználó

szavazat
0

Szeretném látni, hogy lekérdezés, de úgy gondolom, hogy valami probléma van valamiféle bejáró, és bár nem tudok mondani olyan helyzetekben, amikor a lehetséges, lefogadom, hogy a rossz, míg / tok / kurzor vagy egy tonna rosszul végrehajtott nézeteit.

Válaszolt 05/08/2008 15:58
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more