SQL小技巧(不可不知的秘诀)

SQL小技巧(不可不知的秘诀)

ID:41367490

大小:292.50 KB

页数:12页

时间:2019-08-23

SQL小技巧(不可不知的秘诀)_第1页
SQL小技巧(不可不知的秘诀)_第2页
SQL小技巧(不可不知的秘诀)_第3页
SQL小技巧(不可不知的秘诀)_第4页
SQL小技巧(不可不知的秘诀)_第5页
资源描述:

《SQL小技巧(不可不知的秘诀)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SkillsofSQL索引简介索引的种类:B-Tree索引位图索引通常创建的索引默认为B-Tree索引,可以为单列或复合列(最多32列)。索引往往会提高查询的效率以下操作符会限制索引的使用不等于操作符(<>、!=)使用ISNULL或ISNOTNULL使用相关函数:trunc等使用>100or<100来代替<>100建议开发人员在建表时,把需要索引的列设成NOTNULL。假如被索引的列在某些行中存在NULL值,就不会使用这个索引。Oracle伪列介绍Oracle中伪列就像一个表列,但是它并没有存储在表中伪列可以从表中查询,但不能插入、更新和删除它们的值常用的伪列有ROWID

2、和ROWNUMROWID是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用ROWID伪列快速地定位表中的一行ROWNUM是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数思考:如何快速的从百万条记录表中查询指定的某行记录?避免写效率低的SQL写SQL语句的一般原则:能用1条sql语句完成的,不用2条sql完成能用2条或多条sql完成的,不用带游标的存储过程完成能用带游标的存储过程完成的,不用java实现能用java完成的,不用C完成如果用C都不能完成的话,就要考虑这个功能是不是需要了in和notin的使用:in和notin会使得SQL效率非常低,在

3、查询的时候通常都是全表扫描,对于数据量比较大的表往往查询时间过长。使用exists和notexists来代替,例如:select*fromlucia_lu.rev_2010q1_detail_new_0612awhereexists(select1fromwjy_per_industry_detail_0628bwhereb.busi_key=a.cust_idandb.chain_industry='旅行社')不是任何情况下exists和notexists的效率都高,一般当B表很大的时候使用会提高效率。日常问题SQL的解决方法完全删除大表的数据时使用TRUNCATE来代

4、替DELETE,用法:TRUNCATETABLEwjy_ct_cust_info_0722;TRUNCATE会清空表中所有的记录,表结构不发生变化。删除指定条件的记录条数还得用:Deletefromwjy_ct_cust_info_0722wherebusi_key=…..;表彻底删除及表的闪回当一个表被删除时,它并不是真正的被删除了,而只是放在回收站里(recyclebin)了,当然只要表还在回收站里,它就可以被重新恢复,这也就是“闪回”技术的基本原理。需要说明的是,oracle并不提供100%的闪回,因为当用户在某个表空间里创建一个新表时或需要磁盘空间时,oracle

5、首先使用空闲的磁盘空间,当没有足够的磁盘空间时,oracle会使用回收站的磁盘空间。使用showrecyclebin可以查看回收站使用purgerecyclebin可以清空回收站使用drop命令时可以直接带上purge能将表彻底删除:droptableDSY_3DAYSpurge;上述命令酌情使用,因为使用purge后删除的表很难恢复。闪回表:将表DSY_3DAYSdrop后使用以下语句能看到其在回收站中并没彻底删除:select*fromrecyclebinwhereORIGINAL_name='DSY_3DAYS';flashbacktableDSY_3DAYStob

6、eforedrop;如何迅速统计一个大表的记录条数当一个表有上亿条数据时,如何迅速统计呢?使用count会极其慢,即使建索引。小技巧:selectnum_rowsfromuser_tableswherelower(table_name)=‘rev_2010q1_detail_new_0612’;Parallel用法:当查询返回的结果集比较大的时候使用parallel会提高效率。其原理是强行启用并行度来执行当前的SQL,语法:select/*+parallel(a,4)*/a.*fromwjy_ct_cust_info_0722a;Parallel后面的数字越大,执行效率越

7、高。Parallel比较邪恶,不推荐使用,用成习惯后会导致很多badSQL不会暴露,所以,一般都会在返回记录数大于100万时使用,效果也会比较明显。表的导入和导出:导出:exp导入:imp用法:启动cmd窗口,执行以下命令:expuser/password@databasefile=e:ame.dmptables=(TABLE1,TABLE2)full=N或tables=(TABLE1:P1,TABLE1:P2);如果TABLE1是分区表;impuser/password@databaseigonre=Nfile=e:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。