SQL - Ideiglenes táblázat: Tárolási oszlopainak temp tábla versus csak az elsődleges kulcs

szavazat
2

Azt kell, hogy hozzon létre egy temp tábla személyhívó célra. Azt ki kell választani az összes rekordot egy temp tábla, majd tegye a további feldolgozás vele.

Kíváncsi vagyok, melyik a következő egy jobb megközelítés:

1) Jelölje ki az összes oszlopot az én elsődleges tábla a Temp táblázat majd, hogy képes kiválasztani a sorok azt kellene

VAGY

2) Válassza ki csak az elsődleges kulcsot az elsődleges táblázatban a Temp táblázatban, majd csatlakozott az elsődleges tábla később?

Van-e bármilyen méretű venni dolgozik megközelítés 1 versus megközelítés 2?

[SZER]

Azt kérem, mert tettem volna az első megközelítés, de nézi ELJÁRÁS [dbo]. [Aspnet_Membership_FindUsersByName], ami bekerült az ASP.NET tagság, csinálnak 2. megközelítés

[Edit2]

Az emberek nem férnek hozzá a tárolt eljárás:

  -- Insert into our temp table
INSERT IGNORE  INTO #PageIndexForUsers (UserId)
    SELECT u.UserId
    FROM   dbo.aspnet_Users u, dbo.aspnet_Membership m
    WHERE  u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND u.LoweredUserName LIKE LOWER(@UserNameToMatch)
    ORDER BY u.UserName


SELECT  u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,
        m.CreateDate,
        m.LastLoginDate,
        u.LastActivityDate,
        m.LastPasswordChangedDate,
        u.UserId, m.IsLockedOut,
        m.LastLockoutDate
FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p
WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND
       p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound
ORDER BY u.UserName
A kérdést 09/12/2008 16:01
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
2

A táblázat Változó előnyös lenne, mint egy temp tábla, ha az Ön korlátok.

2. lehetőség kevesebb erőforrás, mert kevesebb adatot átfedések.

Tony pont erről, hogy egy piszkos olvasni tényleg valami, amit meg kell figyelembe venni.

Meg tudja magyarázni, hogy mennyire vagy „lapozás” az ideiglenes táblákat? Ez nem egy lapozó eljárás tisztában vagyok.

EDIT: Miután nézte a bejegyzést szerkeszteni, akkor feltétlenül használjon egy változó ebben az esetben. A kevesebb tisztítás és akkor nem fújja ki a tempdb annyira.

Továbbá, a maga nemében nem világos, milyen hasznot ez temp táblázatban. Ha a cél az, hogy hagyja abba a felhasználó hozzáférjen tárgy / applicaiton, akkor miért adunk az egészben, hogy az, hogy „csak korlátozott, ha ezen a bizonyos adatokat táblázat oldalon”. Úgy tűnik, egyfajta hole-y biztonsági szempontból.

A temp tábla is elég sok is kiküszöbölte, hiszen kiválasztja az azonos táblákat.

Válaszolt 09/12/2008 16:15
a forrás felhasználó

szavazat
1

A megközelítés 1, az adatok a temp tábla lehet a lépést a valós adatok, azaz ha más ülések módosítja a valós adatokat. Ez lehet az OK, ha csak megtekintésére egy pillanatkép a felvett adatok egy bizonyos ponton, de veszélyes lenne, ha arra is frissítjük, az igazi táblázat alapján a változtatásokat az ideiglenes másolatát.

Válaszolt 09/12/2008 16:04
a forrás felhasználó

szavazat
0

Egy másik, hogy lapozás (ahogy a cégem csinálja) használata CTE években.

Nézd meg ezt a példát http://softscenario.blogspot.com/2007/11/sql-2005-server-side-paging-using-cte.html

CREATE PROC GetPagedEmployees (@NumbersOnPage INT=25,@PageNumb INT = 1)
AS BEGIN

WITH AllEmployees AS
(SELECT ROW_NUMBER() OVER (Order by [Person].[Contact].[LastName]) AS RowID,
[FirstName],[MiddleName],[LastName],[EmailAddress] FROM [Person].[Contact])

SELECT [FirstName],[MiddleName],[LastName],[EmailAddress]
FROM AllEmployees WHERE RowID BETWEEN
((@PageNumb - 1) * @NumbersOnPage) + 1 AND @PageNumb * NumbersOnPage
ORDER BY RowID
Válaszolt 09/07/2009 09:40
a forrás felhasználó

szavazat
0

Gondolj bele, hogy így. Tegyük fel, hogy lekérdezés visszatér elég lemezt benépesítésére 1000 oldal. Hány felhasználó mit gondol valóban meg az összes ezeket az oldalakat? Visszatérve csak az ID-ket, nem adják vissza a sok információt, amit lehet, hogy nem kell látni. Így kell menteni a hálózati és szerver erőforrásait. És ha tényleg nem megy át sok oldalt lenne szükség elegendő időt, hogy az adatok további részletek talán valóban szükséges frissíteni.

Válaszolt 09/12/2008 21:49
a forrás felhasználó

szavazat
0

Ez pontosan az a megközelítés használjak Lapozás a szerveren,

Hozzon létre egy változót (miért merülnek overhead tranzakció naplózás?) Ha csak a legfontosabb értékeket. (Create a táblázat egy autonum Identity oszlop elsődleges kulcs - ez lesz ROWNUM.)

Beírása kulcsokat az asztalra felhasználók alapján sort / szűrési feltételeket .. Identity oszlop most egy sor számot, amelyet fel lehet használni a lapozás.

Válasszunk asztal változó csatlakozott más táblákhoz valós adatok szükségesek, egyesített kulcsfontosságú érték,

Where RowNum Between ((PageNumber-1) * PageSize) + 1 And PageNumber * PageSize
Válaszolt 09/12/2008 16:43
a forrás felhasználó

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