【发布时间】:2013-03-26 01:56:15
【问题描述】:
我有一个脚本,它必须查看超过 250 万条记录,以查找成员是否有未读电子邮件。我想知道可以做些什么来提高它的速度。目前运行脚本最多可能需要 8 秒:
SELECT TOP(1) MemberMailID
FROM MemberMail
WHERE ToReadFlag = 0
AND ToMemberID = 102
AND ToDeletedFlag = 0
AND FromDeletedFlag = 0
AND OnHold = 0
AND ToArchivedFlag = 0
如何使用索引使其更快?
【问题讨论】:
-
嗯,首先,请显示您的表架构,以及任何现有的索引定义。我是 Oracle 人,但 SQL Server 没有工具来显示查询访问计划(如 oracle 中的“解释计划”)?这是我的第一个建议。
-
不可能从中确定(我们需要解释计划),但我怀疑超过
ToMemberId将是一个好的开始。另外,为什么你有两个“删除”标志? -
TOP 没有 ORDER BY?所以你不在乎你得到哪一个?
-
你的表结构是什么?您目前有哪些索引?你看过执行计划吗?
标签: sql sql-server sql-server-2008