我使用ASP.NET成員資格,最重要的是我添加了一些與用戶有一對多關係的表。使用計數優化SQL查詢
一個用戶有很多筆,筆記本等
我編碼一個自定義的成員提供和已經修改了選擇查詢檢索所有關於用戶以及用戶具有筆的數量和信息「工具」的總數,但查詢顯然是災難性的。 無論如何得到這些信息? 這是我曾嘗試:
SET STATISTICS TIME ON
SELECT m.Email, m.PasswordQuestion, m.IsApproved, m.CreateDate, m.LastLoginDate,
u.LastActivityDate, m.LastPasswordChangedDate, u.UserId, m.IsLockedOut,
m.LastLockoutDate, CAST(m.Comment as nvarchar(max)) as Comment,
COUNT(DISTINCT cl.Id) AS NumberOfPens,
COUNT(DISTINCT cf.Id)+
COUNT(DISTINCT cm.Id) +
COUNT(DISTINCT ce.Id) +
COUNT(DISTINCT cl.Id) +
COUNT(DISTINCT cp.Id) +
COUNT(DISTINCT csl.Id)+
COUNT(DISTINCT cs.Id) +
COUNT(DISTINCT cshl.Id) AS NumberOfTools
FROM aspnet_Membership AS m
INNER JOIN aspnet_Users AS u ON m.UserId = u.UserId
INNER JOIN Pens AS cf ON u.UserId = cf.Owner
INNER JOIN Notebooks AS cm ON u.UserId = cm.Owner
INNER JOIN Rulers AS ce ON u.UserId = ce.Owner
INNER JOIN Calculators AS cl ON u.UserId = cl.Owner
CROSS JOIN aspnet_Applications AS a
GROUP BY u.UserId, m.Email, m.PasswordQuestion, m.IsApproved,
m.CreateDate, m.LastLoginDate, u.LastActivityDate,
m.LastPasswordChangedDate, m.IsLockedOut, m.LastLockoutDate,
CAST(m.Comment as nvarchar(max))
SET STATISTICS TIME OFF
9分鐘11秒91級的用戶!
是的,我知道我吮吸DB。但我真的很想擁有這些數字,但我不知道如何獲取這些數字 – BCartolo 2012-01-10 16:46:57
您正在使用哪種SQL Server版本? – Quassnoi 2012-01-10 16:49:40
Microsoft SQL Server 2008 R2標準 – BCartolo 2012-01-10 18:29:33