开发者社区> 龙轩8023> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

你对SQL性能优化知识知多少?

简介: 转自:http://www.vaikan.com/what-do-you-know-about-sql-performance/  “SQL性能优化是一种黑魔法 就像炼金术一样: 各种配方难解晦涩, 只有一小部分圈内人才能理解。
+关注继续查看


转自:http://www.vaikan.com/what-do-you-know-about-sql-performance/ 

“SQL性能优化是一种黑魔法
就像炼金术一样:
各种配方难解晦涩,
只有一小部分圈内人才能理解。”

这是一种误解,SQL数据库使用的是大家公知的算法来实现可以预期的执行性能。然而,问题是,人们很容易写出不能发挥最高效算法的SQL查询语句,因而也容易产生无法预期的性能结果。

下面是5道关于SQL性能优化小测试题,这些测试题也许会让你坚信SQL优化就是一种黑魔法。但答案中提供的解释说明会随即让你明白,这些所谓的黑魔法其实是纯粹的科学。

本测试中使用的SQL是基于Oracle数据库。

单从性能的视角看,下面的这些SQL写法是好的还是不好的?

1、查询出年是2012的所有行:

  1. 当表字段放到函数里执行查询时,索引将不起作用,效率更高的写法如图:

2、查询出最近日期的一行数据:

  1. 这个SQL语句将会按照经过索引的 Top-N 查询方式执行,它的效率跟 INDEX UNIQUE SCAN是等效的,所以会非常快。

3、两个查询语句,通过一个普通列查询:

  1. 建立的索引只能用于第一个查询,第二个SQL无法利用索引提高效率。

4、查询一个字符串:

  1. like对应的查询字符如果是以通配符开头的,索引将无法发挥效能。也没有一个简单的方法来优化这种SQL

5、如果从百万行数据中查询出几千行时,我们使用:

而当我们只需要从百万行数据中查询出10行时,SQL可以改成这样:

  1. 在前一种查询中,索引覆盖了所有的查询字段,执行效能会非常高,而修改后的SQL,虽然返回的数据变少了,但新增的B字段并没有索引。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL批量SQL插入性能优化
       对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。
1004 0
mybatis动态SQL语句
三、动态SQL语句         有些时候,sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。
674 0
[20150803]无法通过sql_id找到sql语句3.txt
[20150803]无法通过sql_id找到sql语句3.txt --前一阵子,在做优化时遇到1个无法通过sql_id找到sql语句的情况: http://blog.itpub.net/267265/viewspace-1749265/ --就是因为共享池太小,执行次数少,没到取样时间,已经从共享池清除。
1057 0
[20150803]无法通过sql_id找到sql语句2.txt
[20150803]无法通过sql_id找到sql语句2.txt --前一阵子,在做优化时遇到1个无法通过sql_id找到sql语句的情况: http://blog.itpub.net/267265/viewspace-1749265/ --就是因为共享池太小,执行次数少,没到取样时间,已经从共享池清除。
992 0
[20150724]无法通过sql_id找到sql语句.txt
[20150724]无法通过sql_id找到sql语句.txt --前一阵子遇到一个奇怪的问题,要优化一个项目: http://www.itpub.net/thread-1930339-1-1.
1037 0
使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)
原文:使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据) 1、查询待导出表Ad中的数据。 SELECT * FROM [DB_Temp].[dbo].[Ad] 2、编写存储过程。
883 0
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
791 0
+关注
龙轩8023
熟悉javaee开发,有多年支付领域的开发经验。关注开源~ httpclientUtil开源项目创建者。https://github.com/Arronlong
214
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载