5个让DBA爱上你的SQL技巧

Posted 程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5个让DBA爱上你的SQL技巧相关的知识,希望对你有一定的参考价值。

我的一个同事Martin Masarik,SQLde的CEO,跟我谈起了他的一个DBA朋友,他管理着一个国际银行的Oracle数据库,数据规模约2TB。Martin Masarik曾问他:“什么样的SQL问题能让你气愤到竖起头发?”,他总结了以下几点,都是经验之谈:



一、不要在索引列上调用Function


这样做将会阻止数据库使用这个索引,这个问题甚至可以影响这个分区表,因为这样做的话将不会从指定的分区中读取数据,而是扫描整一个表空间。对于大数据量的数据表,这将是性能上的一场大灾难。


不要这样做:

WHERE
TIME_ID+14 > to_number(to_char(sysdate,'J'))

应该这样做:

WHERE
TIME_ID > to_number(to_char(sysdate-14,'J'))

二、使用Analyze对复杂SQL的优化


如果你不这样做,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会。假设你创建了一张拥有100万条记录的临时表,如果不对其进行分析,那么优化器将无法从现有的线索中获取表中真正的内容,于是它只能决定使用嵌套循环连接来一行行地扫描数据表,如果数据量不大,可能我们感觉不到性能的损失,但是随着数据集的增长,你的数据库性能会越来越差。


建议这样做:

ANALYZE TABLE <TABLE_NAME> COMPUTE STATISTICS

三、将复杂的SQL分成几步执行


把SQL想象成披萨,我想你应该不会一下子将整个披萨吞到嘴里嚼烂它吧。


对于创建一个复杂的SQL查询,我们最好将其分成3-4个步骤,SQL越简单,优化器的效果就越好,另外,对每一张数据表中的数据也越容易调试。


四、只有在必要的时候才使用Distinct


这是一个非常好的经验法则,Distinct经常被用在返回2条或2条以上重复记录的SQL查询中,使用Distinct,将会过滤掉重复的数据记录。但是使用Distinct的目的一定要明确,当你确定返回的记录一定是唯一的时候才能使用,比如用户id。滥用Distinct将会出现不可预知的错误,比如多表连接查询的情况。


五、合理创建索引


最后一点就是合理创建表索引,简单来说,假如有一张10万条记录的数据表,你可能经常会查询这样的信息:“我的某个客户信息在这张表中吗?”。如果使用了索引,那么检索这条客户信息将非常迅速,否则数据库优化器将会选择全表扫描,这在大数据量的情况下简直就是噩梦。


来自:码农网

链接:http://www.codeceo.com/article/5-sql-tips-dba-love-you.html


—————————————————

●本文编号572,以后想阅读这篇文章直接输入572即可。

●本文分类“数据库”,搜索分类名可以获得相关文章。

●输入m可以获取到全部文章目录

●输入r可以获取到热门文章推荐

●输入f可以获取到全部分类名称

—————————————————

小猿个人微信:itcodemonkey 欢迎调戏


itdianshang


点击“阅读原文”可关注


以上是关于5个让DBA爱上你的SQL技巧的主要内容,如果未能解决你的问题,请参考以下文章

✨ 7 个让你的 console.log() 输出脱颖而出的提示和技巧

20 个让你效率更高的 CSS 代码技巧

转载 | 20 个让你效率更高的 CSS 代码技巧

20 个让前端效率更高的 CSS 代码技巧

20个让你效率变的更高的CSS代码小技巧!

这6个电脑操作技巧,会让你爱上Win10系统