栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL语句-如何通过索引提高速度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL语句-如何通过索引提高速度

该索引可能会有所帮助,但是请记住,这里没有免费的午餐(必须维护索引,因此这会影响您的插入/更新/删除工作量):

CREATE NonCLUSTERED INDEX unread_emails  ON dbo.MemberMail(ToMemberID)  INCLUDE (MemberMailID)  WHERe ToReadFlag = 0  AND ToDeletedFlag = 0  AND FromDeletedFlag = 0  AND onHold = 0  AND ToArchivedFlag = 0;

现在,您的查询可以说:

SELECT TOP (1) MemberMailID  FROM dbo.MemberMail -- dbo prefix    WITH (INDEX (unread_emails)) -- in case you need to force, though you should notWHERe ToMemberID = 102AND ToReadFlag = 0AND ToDeletedFlag = 0AND FromDeletedFlag = 0AND onHold = 0AND ToArchivedFlag = 0ORDER BY ToMemberID; -- ORDER BY is important!

如果您根据查询更改其中一些标志的值,则可以尝试将这些列添加到索引键而不是过滤器中,例如,假设有时您要检查

onHold = 0
,有时
onHold =1

CREATE NonCLUSTERED INDEX unread_emails  ON dbo.MemberMail(ToMemberID, OnHold)  INCLUDE (MemberMailID)  WHERe ToReadFlag = 0  AND ToDeletedFlag = 0  AND FromDeletedFlag = 0  AND ToArchivedFlag = 0;

您可能还想尝试使用

MemberMailID
键而不是
INCLUDE
。例如:

CREATE NonCLUSTERED INDEX unread_emails  ON dbo.MemberMail(ToMemberID, MemberMailID)  WHERe ToReadFlag = 0  AND ToDeletedFlag = 0  AND FromDeletedFlag = 0  AND onHold = 0  AND ToArchivedFlag = 0;

这些差异可能对您的数据和使用模式无关紧要,但是您将能够比我们所能猜测的更容易地测试差异。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号