数据库的优化tips

数据库   TIPS::

1、用于记录或者是数据分析的表创建时::使用Id作为主键,1,2,3...表示消息条数,用户账号id用于做外键,一个用户对应唯一个accountId

一个accountId可以对应多条数据;

2、创建索引::    例如需要根据注册版本号和注册游戏ID来查询另外一些字段的时候,就可以根据版本号和游戏ID来创建索引::相当于就是根据查询条件来建索引;

3、数据库查询优化::  (1)、慎用 SELECT DISTINCT,从记录集中排除重复记录时,才使用DISTINCT;

(2)、选择最优效率的表名顺序 SQLSERVER从右到左的顺序处理FROM子句中的表名;当from子句中包含多个表的情况下,必须选择记录最少的表作为基础表,即把数据少的表放
在最后;(注:有三个以上的表连接查询,则需要选择交叉表作为基础表)

4、使用表的别名(Alias)::连接多个表是,使用别名把别名前缀于每个Column上

5、最好使用可SARG作为WHERE搜索条件::        例如列和常量之间的比较。在WHERE子句里不可SARG的搜索条件如"IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE"和"LIKE ‘%500‘",通常(但不总是)会阻止查询优化器使用索引执行搜索。另外在列上使用包括函数的表达式、两边都使用相同列的表达式、或和一个列(不是常量)比较的表达式,都是不可SARG的。   (注::如果你不知道特定的WHERE查询字句是不是可SARG,可以在查询分析器里检查查询执行计划)

6、WHERE字句中的连接顺序::       SQLSERVER采用自下而上的顺序解析WHERE字句,所以表之间的连接必须写在其他WHERE条件之前,可以过滤最多数据记录的条件必须写在WHERE子句的末尾。

7、避免使用困难的正规表达式::

8、 避免对大型数据表行数据的顺序存取::

9、正确使用UNION和UNION ALL:: 使用UNION时、相当于在结果集上执行SELECT DISTINT,UNION将联合两个相类似的记录表,然后搜索重复的记录并排除;;; 如果搜索的联合记录集中木有重复记录,则使用UNION ALL。

10、EXISTS和IN的使用::  基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行连接,在这种情况下,使用EXISTS(或NOT EXISTS)通常将提高查询的效率。

11、用存储过程代替直接写查询语句::减少网络流量和响应时间,提升应用程序性能;

12、存储过程名不要以sp_开头::这个特别的前缀是为系统存储过程保留的,用户定义的存储过的运行,会稍微降低一些执行效率。

13、存储古城的拥有者要相同::      同一存储过程里调用的所有对象的拥有者都应该相同,DBO更合适。

14、让食物尽可能的短:: 保持TSQL事务尽可能的短,这会减少锁的数量。

15、tinyint(0-255、-128 - 127 1字节);smallint(0-65535、-32768 - 32767 2字节)

mediumint(0-16777215,-8388608 - 8388607 4字节);int(0-4294967295、-2147483648 - 2147483647 8字节)

时间: 2024-10-22 23:19:14

数据库的优化tips的相关文章

Mysql数据库性能优化(一)

参考 http://www.jb51.net/article/82254.htm 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库. mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面

架构设计:系统存储(8)——MySQL数据库性能优化(4)

================================ (接上文<架构设计:系统存储(7)--MySQL数据库性能优化(3)>) 4-3.InnoDB中的锁 虽然锁机制是InnoDB引擎中为了保证事务性而自然存在的,在索引.表结构.配置参数一定的前提下,InnoDB引擎加锁过程是一样的,所以理论上来说也就不存在"锁机制能够提升性能"这样的说法.但如果技术人员不理解InnoDB中的锁机制或者混乱.错误的索引定义和同样混乱的SQL写操作语句共同作用,那么导致死锁出现的

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs

数据库性能优化 相关书籍: 1.基于成本的Oracle优化法则 2.Oracle性能诊断艺术 3.基于Oracle的SQL优化 ----------------------------------------------------------------------------------------- 两种优化器: CBO  cost-base optimizer 基于cost 更大适应性/灵活性/10g开始 RBO  rule-base optimizer 基于规则 制定了15条/10g以

SQL Server数据库性能优化之SQL语句篇(转载)

SQL Server数据库性能优化之SQL语句篇 原文地址:http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 期项目需要,做了一段时间的SQL Server性能优化,遇到了一些问题,也积累了一些经验,现总结一下,与君共享.SQL Server性能优化涉及到许多方面,如良好的系统和数据库设计,优质的SQL编写,合适的数据表索引设计,甚至各种硬件因素:网络性能.服务器的性能.操作系统的性能,甚至网卡.交换机等.这篇文章主

数据库数据优化故事多

基础调用评教系统接口,在运行程序时 我们看到IIS的进程居高不下. 于是想了几个方法进行数据库的而优化尝试. 第一 加索引. 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.索引对于数据库来说 就像目录和整本书的关系一样.有了数据库索引,我们就可以先查找目录,然后快速的找到我们想要查询的字段.如果想按特定学生的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. 优点: 创建索引可以大大提高系统的性能.第一,通过创建唯一性索引,可以保

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

数据库SQL优化大总结之 百万级数据库优化方

http://tw.streetvoice.com/anssm001/songs/album/93124674/ http://tw.streetvoice.com/anssm001/songs/album/93124684/ http://tw.streetvoice.com/anssm001/songs/album/93124698/ http://tw.streetvoice.com/anssm001/songs/album/93124716/ http://tw.streetvoice.

数据库后台优化——触发器

为了保证数据库的完整性和一致性,很多的时候需要执行多条sql语句才能达到想要的目的. 在一对多的数据库关系中,比如卡号类别与卡号之间的关系.如果要取消某个类别的时候,就要连同齐下的所有卡号都删除.在现实中,注册的时候一般都会进行充值,当我想card表里面写东西的时候,就要向recharge表里面写一条充值记录.完成这两个操作才算完成这个功能的实现. 对于以上的需求,每个功能的实现 都伴随着多条sql语句的执行. 为了解决上面的问题,一共有两种解决方法.一是存储过程,二是触发器.上篇博客中已经讲解

架构设计:系统存储(9)——MySQL数据库性能优化(5)

=================================== (接上文<架构设计:系统存储(9)--MySQL数据库性能优化(5)>) 4-3-3-3.避免死锁的建议 上一篇文章我们主要介绍了MySQL数据库中锁的基本原理.工作过程和产生死锁的原因.通过上一篇文章的介绍,可以确定我们需要业务系统中尽可能避免死锁的出现.这里为各位读者介绍一些在InnoDB引擎使用过程中减少死锁的建议. 正确使用读操作语句 经过之前文章介绍,我们知道一般的快照读是不会给数据表任何锁的.那么这些快照读操作