[MSSQL]使用索引的原则

本文探讨了在MSSQL中有效利用索引提高查询效率的策略。当查询返回数据行数少于5%时,索引查询效果最佳。复合索引在多列查询中优于单列索引,因为可以避免全表扫描。同时,索引对INSERT、DELETE和UPDATE操作可能降低效率。举例说明了NOT IN和EXISTS子查询在利用索引方面的差异,以及索引字段不应参与计算和特定操作,如IS NULL,LIKE等,以免阻止索引的使用。
摘要由CSDN通过智能技术生成

查询结果是所有数据行的5%以下时,使用index查询效果最好;

where条件中经常用到表的多列时,使用复合索引效果会好于几个单列索引。因为当sql 语句所查询的列,全部都出现在复合索引中时,此时由于 Oracle
只需要查询索引块即可获得所有数据,当然比使用多个单列索引要快得多;

索引利于select,但对经常insert,delte尤其update的表,会降低效率。
eg:试比较下面两条SQL语句(emp
表的deptno列上建有ununique index): 语句A:SELECT dname, deptno FROM dept WHERE deptno NOT
IN (SELECT deptno FROM emp); 语句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS
(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);
这两条查询语句实现的结果是相同的,但是执行语句A的时候,ORACLE会对整个emp表进行扫描,没有使用建立在emp表上的deptno索引,执行语句B的时候,由于在子查询中使用了联合查询,ORACLE只是对emp表进行的部分数据扫描,并利用了deptno列的索引,所以语句B的效率要比语句A的效率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值