您当前的位置: 首页 >  sql

暂无认证

  • 0浏览

    0关注

    99463博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[MSSQL]使用索引的原则

发布时间:2012-07-10 12:52:30 ,浏览量:0

查询结果是所有数据行的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的效率高。 where 子句中的这个字段,必须是复合索引的第一个字段; eg:一个索引是按f1, f2, f3的次序建立的,若where 子句是f2 = : var2, 则因为f2 不是索引的第1个字段,无法使用该索引。 where 子句中的这个字段,不应该参与任何形式的计

关注
打赏
1655516835
查看更多评论
立即登录/注册

微信扫码登录

0.0642s