此问题是双刃。在测试系统上,此查询返回约7分钟。在我的报告系统上,它具有相同的索引和附加列存储索引以覆盖其他问题报告,它根本不想返回选择使用列存储索引。
1)我可以使用CTE或其他东西来完成这个TSQL吗?如果不改变逻辑,我似乎无法提高性能。
SELECT Count(BookingId)
from Booking_tbl b1
WHERE email IN (Select Email From Booking_tbl b2 WHERE DateDiff(day, b2.BookedDate , b1.BookedDate) > 1)
2)我可以使用特定索引停止引擎吗?我知道我可以将它设置为INDEX(0)以不使用索引或命名特定索引,但我可以说'对于此查询,不要使用此特定索引!'
被撕裂以将其放在SO或DBA SE上
基本上我需要计算重复预订的数量以获得百分比。
感谢
答案 0 :(得分:1)
我猜你在试图计算BookedDate超过一天的电子邮件。
尝试此查询:
SELECT COUNT(*) FROM
(
SELECT email FROM Booking_tbl
GROUP BY email
HAVING DateDiff(day, MIN(BookedDate) ,MAX(BookedDate)) > 1
) as T
为了加快速度,您应该在BookedDate
和email
字段上创建索引。