sql
艾伦蓝
Just do it
展开
-
oracle sql语句优化总结
[size=large][color=red][b]1.直接路径读方式[/b][/color][/size][code="sql"]--直接路径读方式drop table test;create table test as select * from dba_objects where 1=2;set timing oninsert /*+ append */ in...原创 2013-06-19 16:45:28 · 82 阅读 · 0 评论 -
几种范式详解
原创 2014-05-04 10:46:51 · 331 阅读 · 0 评论 -
sql 数据库索引的使用规则
[b]2.应该少建或者不建索引的字段有:[/b] [b][color=red]a.表记录太少[/color][/b] [color=blue][b]b.经常需要插入,删除,修改的表[/b][/color] [b]c.表中数据重复且分布平均的字段[/b]3.一些SQL的写法会限制索引的使用: [color=red]a.where子句中如果使用in、or、like、!= ,均会导致索引不能正常使用,将"&q原创 2014-06-15 14:49:42 · 131 阅读 · 0 评论 -
oracle exists 和not exists 用法详解
原创 2014-06-15 16:17:03 · 84 阅读 · 0 评论 -
sql order by与索引之间的关系(where条件出现字段才有效)
后再排序。[/color]用有序索引这种,当然是最快的,不过有一些限制条件,来看下面的测试。 测试数据:student表有两个字段id ,sid ,id是主键。一共有20W条记录,id从1到200000,sid也是从1到200000的数据。 第一种情况 : order by的字段不在where条件也不在select中 select sid from zhuyuehua.student where sid < 50000 order by id;[img]原创 2014-06-15 20:00:58 · 165 阅读 · 0 评论 -
sql like与索引(后模糊匹配才能让索引有效)
原创 2014-06-15 20:12:18 · 330 阅读 · 0 评论 -
oracle join关键字使用总结
原创 2014-06-17 13:57:07 · 110 阅读 · 0 评论 -
oracle 高效Sql语句总结
原创 2014-10-08 11:23:52 · 137 阅读 · 0 评论 -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
CKS,AVG_SPACE,AVG_ROW_LEN from user_tables where table_name=table_name;[/code]2.Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,[b][color=red]原因是该表的空间大了,查询起来很慢。[/color][/b][color=blue]解决的方法是把该表所占用的表空间缩小,或者说释放表空间。[/color][b][c原创 2014-10-17 18:09:12 · 562 阅读 · 0 评论 -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
[/code][b][size=large][color=red]通过CONNECT BY生成序列[/color][/size][/b][code="sql"]SQL> SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM原创 2014-10-27 10:08:06 · 138 阅读 · 0 评论 -
oracle 常用sql语句积累
[code="java"]select age from (select age from t order by age desc) where rownumnull)加上后就没有大小限制了。。。不设置输出的缓冲如果输出超过2000字节就不可以用了 setserveroutput on 打开输出窗口。。。[color=red]18.左外连接实例[/color][code="sql"]select a.id,a.age,b.id,b.age fro原创 2016-01-28 11:01:34 · 69 阅读 · 0 评论 -
oracle 重复数据处理的sql整理
ect * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)[/code] 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录 [code="sql"]DELETE from 表 WHERE (rowid,id) IN ( SELECT MIN(ROWID),id FROM 表 GROUP BY id HAVING COUNT(id)原创 2016-06-22 14:44:00 · 97 阅读 · 0 评论 -
oracle where条件分支查询
de][size=medium][color=red][b]?表示传入的参数 比如传一个 100 就是 '100' = '-' 当传入的参数等于-时 执行 后面的语句 否则 不等-时执行第二个括号里面的语句[/b][/color][/size][b][color=blue]注意?不是属性名 而是具体的值 [/color][/b]原创 2016-06-30 16:16:25 · 389 阅读 · 0 评论 -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
原创 2017-08-18 16:48:34 · 6603 阅读 · 0 评论 -
oracle jdbctemplate如何优化查询速度
olor][code="sql"]select /*+PARALLEL(tablename,8)*/ * from tablename[/code]原创 2017-08-21 09:33:33 · 835 阅读 · 0 评论 -
oracle HINT详解
s来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是all_rows还是first_rows。 3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 2、HINT可以基于以下规则产生作用 [size=medium][b]1. /*+ALL_ROWS*/ [/b][/size] 表明对语句块选择基于开销的优原创 2017-09-01 10:42:06 · 82 阅读 · 0 评论 -
sql 用inner join取代in和exists
[code="sql"]-->低效: SELECT * FROM t1 e原创 2018-01-02 16:48:20 · 210 阅读 · 0 评论 -
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
原创 2018-01-02 16:51:16 · 365 阅读 · 0 评论 -
oracle sql语句优化总结
oninsert /*+ append */ into test select * from t;commit;--注意这个直接路径方式插入试验输出的物理读(这是首次读哦)set autotrace traceonlyselect count(*) from test;[/code][size=large][color=red][b]2.绑定变量使得速度加快[/b][/color][/size][code="sql"]SQL>--未原创 2013-06-19 16:45:28 · 74 阅读 · 0 评论 -
sql 查询一些基础数据(不经常变)关联关系时可以把关联关系写入到表中
[color=red][b]原来的查询语句[/b][/color][code="sql"]FROM table1 tLEFT JOIN ( SELECT regcert_id, count(1) AS num FROM table2 GROUP BY regcert_id) t1 ON t1.table1_id = t.id[/code]...原创 2018-04-16 15:18:46 · 166 阅读 · 0 评论 -
几种范式详解
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是...原创 2014-05-04 10:46:51 · 340 阅读 · 0 评论 -
sql 数据库索引的使用规则
[b]1.应该建索引的字段:[/b] [color=red]a.经常作为查询条件的字段[/color] b.外键 c.经常需要排序的字段 d.分组排序的字段。[b]2.应该少建或者不建索引的字段有:[/b] [b][color=red]a.表记录太少[/color][/b] ...原创 2014-06-15 14:49:42 · 331 阅读 · 0 评论 -
oracle exists 和not exists 用法详解
有两个简单例子,以说明 “exists”和“in”的效率问题1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; [color=red][b]T1数据量小而T2数据量非常大时,T1T2 时,2) 的查询效率高。[/b][/color]exists 用法:请注意 1)句中的有颜色字体的部...原创 2014-06-15 16:17:03 · 205 阅读 · 0 评论 -
sql order by与索引之间的关系(where条件出现字段才有效)
ORDER BY 通常会有两种实现方法,[color=red]一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了。另一个是把结果选好之后再排序。[/color]用有序索引这种,当然是最快的,不过有一些限制条件,来看下面的测试。 测试数据:student表有两个字段id ,sid ,id是主键。一共有20W条记录,id从1到200000,sid也是从1到20...原创 2014-06-15 20:00:58 · 383 阅读 · 0 评论 -
sql like与索引(后模糊匹配才能让索引有效)
索引与优化like查询 1. [color=red]like %keyword 索引失效,使用全表扫描。[/color]但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。[size=medium][b]2. [color=red]like keyword% 索引有效。[/color][/b][/size]3.[color=red] ...原创 2014-06-15 20:12:18 · 390 阅读 · 0 评论 -
oracle join关键字使用总结
1.内连接:[b][color=red]选出两个表中所有符合连接条件的row构成的集合。[/color][/b]2.外连接:分为LEFT、RIGHT、FULL三种:如有R与S做连接,那么LEFT是所有满足条件的row以及所有在R属性对应值在S中为NULL的集合。 注意([color=red]left join 是 left outer join 简写[/color])RIGHT是所有...原创 2014-06-17 13:57:07 · 123 阅读 · 0 评论 -
oracle 高效Sql语句总结
No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个...原创 2014-10-08 11:23:52 · 138 阅读 · 0 评论 -
oracle 重复数据处理的sql整理
[size=medium][color=red][b]Oracle 删除重复数据只留一条[/b][/color][/size] 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 [code="sql"]select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)[/c...原创 2016-06-22 14:44:00 · 102 阅读 · 0 评论 -
oracle where条件分支查询
[code="sqll"]select *from test xxwhere (? = '-' AND xx.xxx IN (select aa.XXXfrom AA aa)) OR (? '-' AND xx.xxx IN(SELECT xsdf FROM xxx WHERE ddd ='pp' OR ddd= 'bbb')) ;[/co...原创 2016-06-30 16:16:25 · 191 阅读 · 0 评论 -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
1. DELETE 后 TRUNCATE TABLE ;然后重新分析一下 [code="sql"]analyze table tablename compute statistics[/code][color=red][b]查看表信息[/b][/color][code="sql"]select NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN fr...原创 2014-10-17 18:09:12 · 404 阅读 · 0 评论 -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
[size=large][b]查询名字为xx xxx的所有子数据[/b][/size][code="sql"]SELECT re.UUID FROM INF_xxx reCONNECT BY PRIOR re.UUID = re.PARENT_UUID START WITH re.xxx_name in ('xxx', 'xx')[/code][b][size=l...原创 2014-10-27 10:08:06 · 125 阅读 · 0 评论 -
oracle 常用sql语句积累
[color=red]1.删除重复列[/color][code="sql"]delete from t t1 where t1.rowid not in(select min(rowid) from t t2 where t1.age=t2.age)[/code][color=red]2.获得年龄最大的前三名[/color][code="java"]select age from ...原创 2016-01-28 11:01:34 · 113 阅读 · 0 评论 -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
[size=medium][color=red][b] 1.用途[/b][/color][/size] 强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用paralle...原创 2017-08-18 16:48:34 · 18831 阅读 · 0 评论 -
oracle jdbctemplate如何优化查询速度
[color=red][b]1.设置setFetchSize进行优化[/b][/color][code="java"]// 可以优化jdbcTemplate.setFetchSize(10000);[/code][color=red][b]2.在sql语句中加入PARALLEL执行策略[/b][/color][code="sql"]select /*+PARALLEL(ta...原创 2017-08-21 09:33:33 · 1941 阅读 · 0 评论 -
oracle HINT详解
[size=large][color=red][b]ORACLE的HINT详解[/b][/color][/size] hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用hints来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是all_rows还是first_rows。 3) 表的访问路...原创 2017-09-01 10:42:06 · 195 阅读 · 0 评论 -
sql 用inner join取代in和exists
[size=large][color=red][b]使用表连接替换EXISTS[/b][/color][/size] [b]一般情况下,使用表连接比EXISTS更高效 [/b] [...原创 2018-01-02 16:48:20 · 948 阅读 · 0 评论 -
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
[size=medium][color=red][b]最小化表查询次数[/b][/color][/size] [code="sql"]-->在含有子查询的SQL语句中,要特别注意减...原创 2018-01-02 16:51:16 · 1247 阅读 · 0 评论 -
sql 查询一些基础数据(不经常变)关联关系时可以把关联关系写入到表中
t.id[/code]改造后 先把 [code="sql"]SELECT regcert_id, count(1) AS num FROM table2 GROUP BY regcert_id[/code] 查询出来的数据写入到新表中 如table2优化后的语句[code="sql"]FROM table1 tLEFT JOIN table2 t1 ON t1.table1_id = t.i原创 2018-04-16 15:18:46 · 120 阅读 · 0 评论