【发布时间】:2008-12-09 15:01:07
【问题描述】:
我需要为分页目的创建一个临时表。我会将所有记录选择到一个临时表中,然后对其进行进一步处理。
我想知道以下哪种方法更好:
1) 将我的主表的所有列选择到临时表中,然后能够选择我需要的行
或
2) 只选择Primary Table的主键进入Temp Table,稍后再加入Primary Table?
在使用方法 1 和方法 2 时是否有任何尺寸考虑?
[编辑]
我之所以问,是因为我会使用第一种方法,但查看 ASP.NET 成员资格中包含的 PROCEDURE [dbo].[aspnet_Membership_FindUsersByName],他们正在使用方法 2
[编辑2]
对于无法访问存储过程的人:
-- Insert into our temp table
INSERT 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
【问题讨论】:
标签: sql sql-server sql-server-2005