-1

このクエリは機能していますが、非常に遅いです。私は SQL を初めて使用するので、チューニングに関するヘルプをいただければ幸いです。

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 レコードごとにすべての WarrantyRegistration レコードを (再度) 検索する必要があるため、これは明らかではないかもしれませんが、aspnet_Users* と *の CROSS JOIN を実行しています。WarrantyRegistration

WarrantyRegistration.Commentこのクエリをサポートするために * にインデックスを作成できますか?

于 2013-03-15T19:31:54.163 に答える