数据库优化总结

1.能不用Cursor就不用,如果每次条数一样,可以用循环数组来代替;

2.选择最有效率的表名顺序,ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表,如果有3个以上的表连接查询,那就需要选择交叉表作为基础表, 交叉表是指那个被其他表所引用的表;

3.WHERE子句中的连接顺序,ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾;

4.SELECT子句中避免使用 "*",ORACLE在解析的过程中, 会将‘*‘ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间;

5.在编写pl/sql时候尽量多使用cimmit 以便释放系统资源;

6.用Where子句替换HAVING子句;

7.用EXISTS替代IN、用NOT EXISTS替代NOT IN;

8.识别‘低效执行‘的SQL语句,虽然目前各种关于SQL优化的图形化工具层出不穷,但是写出自己的SQL工具来解决问题始终是一个最好的方法:

  SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, 
  ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, 
  ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
  SQL_TEXT 
  FROM V$SQLAREA 
  WHERE EXECUTIONS>0 
  AND BUFFER_GETS > 0 
  AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8 
  ORDER BY 4 DESC;

9.用索引提高效率;

10.用EXISTS替换DISTINCT;

11.sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行;

12.用IN来替换OR;

时间: 2024-12-18 03:44:09

数据库优化总结的相关文章

数据库优化

本文介绍一点,关于数据库优化方面的经验总结,希望对需要的人有所帮助! 优化请掌握以下几点(高手请补充): 1.表上的字段不要太多,能独立出去的尽量独立出去,虽然表上的字段多,写代码会比较方便, 但是运行效率就差了 2.将字符串的比较变成数字型比较每个系统都会有用户管理,其中必然有 昵称,密码,邮件等的字符串类型数据比较的问题.在数 据库操作中,字符串比较的效率是相当低下的.因此遇到字符串的比较,必须将其转换为数字型 比较.  具体做法是:在数据库表中增加相应的数字字段,比如 cNickname

单机数据库优化的一些实践(mysql)

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影响应用后期的性能,特别是用户量上来了以后的性能.因此,表结构优化是一个很重要的步骤.

MySQL数据库存储引擎与数据库优化

存储引擎 (1)MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就成为存储引擎. 每种存数引擎使用不同的存储机制.索引技巧.锁定水平,最终提供广泛且不同的功能. (2)使用不同的存储引擎也可以说不同类型的表 (3)MySQL支持的存储引擎 MyISAM InnoDB Memory CSV Archive 查看数据表的创建语句: SHOW CREATE TABLE 表名 相关概念: (1).并发控制:一个人读数据,另外一个人在删除这个数据. 当多个连接对记录进行修改时保证数据的一致性

[mysql][【优化集合】mysql数据库优化集合

三个层面: 1.系统层面 2.mysql配置参数 3.sql语句优化 =========================================================== 一.系统层面 =========================================================== 二.mysql参数层面 http://www.oicto.com/mysql-explain-show/ 2.1slowlog 配置slowlog 配置文件: log-slow

数据库优化处理

数据库的优化程度影响了一个程序的执行力和用户的体验感,所以数据库的优化显得格外重要. 一.框架 根据业务需求选择合适的开发框架,不近对数据库的优化有帮助,而且对于程序后期的维护也很有帮助,根据项目的需求,看项目需要满足多少人的访问量,并发量到多少.不是说小公司就不需要分布式.大数据这些,考虑长期的问题. 将一些固定不常变化的值,设置为常量:采用缓存机制,减少对于数据库的访问(连接池):服务器的优化(队列): 二.数据库本身 1.表结构的设计 表的设计来源于需求,同时表的建立也会影响需求的实现,一

mysql优化-数据库优化、SQL优化

我有一张表w1000,里面有1000万条数据,这张表结构如下:CREATE TABLE `w1000` ( `id` varchar(36) NOT NULL, `name` varchar(10) DEFAULT NULL, `age` int(3) DEFAULT NULL, `money` double(8,2) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `create_date` datetime(3) DEFAULT NULL

数据库优化概览

数据库优化,一直是很让人头疼的事,尤其对于当前互联网发展到了一定的时期,数据量达到了一定的数量级,处理数据比较慢,这方面的知识就显得尤为重要了.这里就大概来说下数据库优化的相关知识. 先说下当前数据库大部分都还是以关系型数据库为主流,但是现在NoSQL也慢慢变得越来越重要了,毕竟现在是大数据时代,但是这里主要是讲关系型数据库. 数据优化是①找出系统瓶颈:②合理结构设计和参数调整,提高响应速度:③节省系统资源.其原则是①减少系统瓶颈:②减少资源占用:③增加系统反应速度.一般包括优化查询和优化数据库

[转]浅析大数据量高并发的数据库优化

链接:http://www.uml.org.cn/sjjm/201308264.asp 高并发数据库可以同时处理海量信息,应用范围很广.今天我们将讨论的是大数据量高并发的数据库优化,希望对大家有所帮助. 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性

MySQL数据库优化的八种方式(经典必看)

引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小. 例如,在定义邮政编码这个字段时,如果将其设置为CHAR(2

中国移动MySQL数据库优化最佳实践

原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA 开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据