5段SQL可以测试出你对SQL性能优化知识了解多少

转载 2014年10月28日 15:00:52
数据库是很强大的,它可以实现超预期的执行性能。但是很多人很容易写出不能发挥最高效算法的SQL查询语句,因而也容易产生无法预期的性能结果。

下面UncleToo为大家整理出5段SQL,都是大家平时经常写的SQL,但是稍微经过一些优化,或者换种写法,也许他的执行效率就会高出好几倍,大家也可以对照自己平时的写法,看看自己是否还有继续学习的空间。

本文介绍的SQL是基于ORACLE数据库的。

1、查询2014年所有的行


有过SQL优化经验的人也许会问,这样写没问题啊,将出现在条件中的字段加索引,可以起到优化SQL的作用,怎么会有问题呢?有这样疑问的朋友对数据库优化还是有所了解的,但是你忽略了一点:不管是ORACLE还是其他数据库,一旦将字段放在函数里执行,该字段的索引将不起作用。那么正确的写法如下:



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


这段SQL很经典,开发中很多地方都可能会用到类似这样的查询。没错,这段SQL是不需要优化的,它可以按照经过索引的 Top-N 查询方式执行,它的效率跟 INDEX UNIQUE SCAN(唯一索引扫描) 是等效的,所以会非常快。

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




这个很简单,只有第一个SQL用到了索引,而第二个却无法使用索引。其实这就是单索引与组合索引在使用上的区别。

4、字符串模糊查询


在前面的文章中,我们曾经说过 like 语句如何使用通配符才能提高效率(8个SQL语句常用优化技巧)。当条件中遇到 like 语句,那么无论该字段是否设置索引效果都一样,因为索引遇到 like 就会无法发挥其效能,而且也没有更好的解决办法,因此建议大家除非万不得已,否则不要轻易使用 like 语句。

5、查询某条件下的记录数


上面两条查询语句,第一条可能会查出几千或者几万条记录,而第二条语句因为多了一个条件可能只查出几条或几十条记录,也许大家会认为第二条语句的效率更快。其实刚好相反,第一条语句的执行效率更快。因为第一条语句中,索引覆盖了所有查询字段,而第二个SQL中的b条件没有索引。

相关文章推荐

如何测试sql语句性能,提高执行效率,sql2008

有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高         那么你就用这条语句找出你sql到底是在哪里慢了        ...

性能测试必备SQL语句总结

一、基础 1、说明:创建数据库 CREATE DATABASE database-name  2、说明:删除数据库 drop database dbname 3、说明:备份sql ser...

SQL查询性能分析

SQL查询性能的好坏直接影响到整个数据库的价值,对此,必须郑重对待。 SQL Server提供了多种工具,下面做一个简单的介绍:   一、SQL Profiler工具 SQL Profiler可用于:...

linux下logrotate 配置和理解

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以...
  • cjwid
  • cjwid
  • 2007-07-14 10:37
  • 90071

非常详细的rsyslogd & logrotate配置文件解析

rsyslog服务和logrotate服务 ====================================================================== rsysl...

linux logrotate 配置及测试

一、logrotate 配置 logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储...

Tomcat catalina.out文件过大的解决方案整理.

解决Tomcat日志catalina.out文件过大的问题,主要是在相关博客中寻找了一些方案,也留做一个备忘。

0/1背包问题的动态规划法求解 —— Java 实现

0/1背包问题的动态规划法求解,前人之述备矣,这里所做的工作,不过是自己根据理解实现了一遍,主要目的还是锻炼思维和编程能力,同时,也是为了增进对动态规划法机制的理解和掌握。        值得提...

linux logrotate 配置及测试

一、logrotate 配置 logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储...

系统日志Logrotate配置

Logrotate 的配置 一. Logrotate         Logrotate程序是一个日志文件管理工具。用来把旧的日志文件更名或删除,并创建新的日志文件,我们把它叫做“转储”。是个使日...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)