这里要纠正一个网上很多教程说的模糊匹配不能走索引的说法,因为在看<收获,不止SQL优化>一书,里面举例说到了,并且自己也跟着例子实践了一下,确实like一些特殊情况也是可以走索引的 例子来自<收获,不止SQL优化>一书,实践准备: //建表,注意要非空数据 drop table t purge; create table t as select * from dba_objects where object_id is not null; select * from t; //更新
做记录: 今天有一个有153万条数据的表,发现查询很慢: select count(y) as transfereeNum,x from t_ast_subject_invest_order GROUP BY x; 执行时间大概2-3s .. 给字段x 加上索引后,时间为0.007s . 查询速度明显提升. 2. 关于in 和 exist 效率问题 #外表内表同量级 select o.* from x o and o.trans_from_order IN (select t1.ORDER_NO
--检查损坏索引 SELECT status, COUNT(*) FROM dba_indexes GROUP BY status UNION SELECT status, COUNT(*) FROM dba_ind_partitions GROUP BY status UNION SELECT status, COUNT(*) FROM dba_ind_subpartitions GROUP BY status --重建索引 alter index pk_kc03 rebui
1. 理解ROWID ROWID是由Oracle自动加在表中每行最后的一列伪列,既然是伪列,就说明表中并不会物理存储ROWID的值:你可以像使用其它列一样使用它,只是不能对该列的值进行增.删.改操作:一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的,即使发生行迁移,该行的ROWID值也不变.SELECT t.rowid,t.* FROM DM_COMM_PREM_LIST t where LIST_ID= '3106355531'; 2. SQL优化器优化方式1)基于规则的优化
零.概述 在这之前,一直都是使用mysql来进行开发或者部署.最近及今后很长一段时间都要使用oracle,今天和同事也遇到一个oracle 慢查询问题.查了很多资料,这里记录备忘.持续更新ing... 一.查看执行计划 EXPLAIN PLAN FOR 待执行的sql;(不要忘了分号) SELECT * FROM TABLE (dbms_xplan.display());也可以使用下面这条,会显示更多信息: SELECT * FROM TABLE (dbms_xplan.display(null
前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the basics. 透过索引来看查询执行计划 我们首先来看看第一个例子 1.默认使用索引 USE TSQL2012 GO SELECT orderid FROM Sales.Orders SELECT * FROM Sales.Orders 上述我们看到第2个查询的所需要的开销是第1个查询开销的3倍,