-1

我得到了这个查询,但它真的很慢。我是 SQL 新手,因此我们将不胜感激任何有关 Tuning 的帮助。

SELECT 
    REPLACE(LoweredUserName,'@domain.com','') as Name, 
    COUNT(LoweredUserName) as Numb
FROM 
    aspnet_Users 
JOIN 
    WarrantyRegistration ON CHARINDEX('Added by ' + aspnet_Users.LoweredUserName, 
WarrantyRegistration.Comment) > 0
GROUP BY
    aspnet_Users.LoweredUserName 
ORDER BY
    LoweredUserName ASC

谢谢

4

2 回答 2

2

如果WarrantyRegistration表有添加注册的用户的 id,您应该加入这些 ID 而不是进行CHARINDEX()加入。如果您不能进行外键连接,您应该认真考虑修改您的架构,以便在可能的情况下这样做。

于 2013-03-15T19:36:43.520 回答
0

您正在执行aspnet_Users* 和 *的 CROSS JOIN WarrantyRegistration,即使这可能不明显,因为必须(再次)搜索每个 aspnet_Users 记录的每个 WarrantyRegistration 记录。

你能在WarrantyRegistration.Comment* 上创建一个索引来支持这个查询吗?

于 2013-03-15T19:31:54.163 回答