首页 电脑 电脑学堂 查看内容

如何写出高效的sql的一点想法

2010-8-5 16:15 575 0

摘要:     1.什么样的sql,才算是高效的sql呢?     2.sql为什么不走索引?如何让sql走索引,即改变sql的执行计划 &nb...
关键词: nbsp 索引 时候 columnname sql indexname tablename create index 好用

    1.什么样的sql,才算是高效的sql呢?     2.sql为什么不走索引?如何让sql走索引,即改变sql的执行计划     3.索引有哪几种?     4,什时候用索引,什么时候全表扫描     oracle优化器的表统计信息,评估出表的最佳连接顺序,表的连接方法,执行路径;     最后生成执行计划,oracle就按着这个计划来执行sql     1.什么样的sql是高效sql?     答:最本质答案就是执行时间最短,怎么才能最短了,就是用最少的资源把事办了,不做无用功;     即使sql的io最少,那怎么样才才能最少呢?就是尽量用索引,不要全表扫描;在多表关联的     时候,开发人选正确的表连接方法,执行路径等     2.sql为何不走索引     A.类型不匹配     B。条件列包含函数但没有创建相应的函数索引     C。复合索引中的前导列没有被做为查询条件     D。CBO的模式下,选择的行数比例较大,优化器选择全表扫描     E。CBO的模式下,表很久没有分析,优化器选择了全表扫描     3.索引种类及创建方法     A。B*索引     create index indexname on tablename(columnname);     B.反向索引     create index indexname on tablename(columnname) reverse;     C.降序索引     create index indexname on tablename(columnname desc);     D.位图索引     create bitmap index indexname on tablename(columnname);     E。函数索引     create index indexname on tablename(functionname(columnname));     4,什时候用索引,什么时候用全表扫描?     答:     要使用索引时,首先要弄清一些基本信息     表有多少行?查询返回多少行?表的哪些列上有索引?都是什么样的索引?     在有多个条件列时,应该选择什么样的索引?     A.当查询的记录数,在有序表中小于40%的时候,最好用索引;否则用全表扫描     B.当查询的记录数,在有无序表中小于7%的时候,最好用索引;否则用全表扫描     C.表的锁片较多时(这个表dml操作很频繁)
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部