你对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字段并没有索引。
目录
相关文章
|
3月前
|
存储 SQL 分布式计算
性能优化:Spark SQL中的谓词下推和列式存储
性能优化:Spark SQL中的谓词下推和列式存储
|
3月前
|
SQL 缓存 数据库
PL/SQL的性能优化
PL/SQL的性能优化
37 0
|
4月前
|
SQL 存储 关系型数据库
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
87 0
|
6月前
|
SQL 分布式计算 大数据
分享一个 HIVE SQL 性能优化点-使用公共表表达式 CTE 替换临时表
分享一个 HIVE SQL 性能优化点-使用公共表表达式 CTE 替换临时表
|
8月前
|
SQL 关系型数据库 MySQL
MySQL的SQL语句性能优化
MySQL的SQL语句性能优化
|
9月前
|
SQL 存储 缓存
52条SQL语句性能优化策略
通过对网上资料的整理,归纳了52条SQL语句性能优化策略
79 0
|
存储 SQL 缓存
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
想必大家都知道,面试期间一提到数据库,就会聊到数据库优化相关问题。网上关于数据库优化的文章也是眼花缭乱,层出不穷。今天将会通过这篇文章细分几点给大家汇总整理出一套关于MySQL数据库的优化方案,让大家通过学习这篇文章不再被面试官吊打!
720 0
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
|
存储 SQL 缓存
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
131 0
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
|
SQL 存储 数据采集
做 SQL 性能优化真是让人干瞪眼
很多大数据计算都是用SQL实现的,跑得慢时就要去优化SQL,但常常碰到让人干瞪眼的情况。
35134 4
做 SQL 性能优化真是让人干瞪眼
|
SQL 分布式计算 资源调度
阿里云-DataWorks- ODPS SQL开发4-SQL性能优化
阿里云-DataWorks- ODPS SQL开发4-SQL性能优化