转 数据库优化方法

索引:创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。95% 的数据库能问题都可以采用索引技术得到解决。索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。 

缓存:hibernate,spring3有缓存模块

分表:针对每个时间周期产生大量的数据,可以考虑采用一定的策略将数据存到多个数据表中。

分库:就是将系统按照模块相关的特征分布到不同的数据中,以提高系统整体负载能力。

sql优化:

 1.in 和 not in 也要慎用,因为IN会使系统无法使用索引,而只能直接搜索表中的数据。如:

select id from t where num in(1,2,3)对于连续的数值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

2.当判断真假是,如果带and 或者 or :

(当存在 “where 条件1 and 条件2” 时,数据库先执行右边的语句)

and尽量把假的放到右边(一个为假就为假)  Or尽量把为真的放到右边(一个为真就为真)

3.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。 如:

SELECT * FROM T1 WHERE F1/2=100 

应改为: 

SELECT * FROM T1 WHERE F1=100*2

SELECT * FROM RECORD WHERE SUBSTRING(CARD_NO,1,4)=’5378’ 

应改为: 

SELECT * FROM RECORD WHERE CARD_NO LIKE ‘5378%’

SELECT member_number, first_name, last_name FROM members 

WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21 

应改为: 

SELECT member_number, first_name, last_name FROM members 

WHERE dateofbirth < DATEADD(yy,-21,GETDATE()) 

即:任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时 要尽可能将操作移至等号右边。

时间: 2024-11-17 09:25:04

转 数据库优化方法的相关文章

详解MySQL 数据库优化方法

用analyze进行处理,定期进行处理 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tb1_name[, tbl_name]... 对表进行定义分析analyze table table_name CHECK TABLE tb1_name[,tbl_name]...[option]...option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED} 定期对表进行优化 OPTIMIZE [LOCAL | NO_W

MySQL数据库优化方法总结

中介交易 SEO诊断 淘宝客 云主机 技术大厅 数据库优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解才行.尽管对系统或应用系统的了解不多的情况下优化效果还不错,但是如果想优化的效果更好,那么就需要对它了解更多才行. 1.优化概述 让系统运行得快得最重要因素是数据库基本的设计.并且还必须清楚您的系统要用来做什么,以及存在的瓶颈. 最常见的系统瓶颈有以下几种: 磁盘搜索.它慢慢地在磁盘中搜索数据块.对现代磁盘来说,平时的搜索时间基本上小于10毫秒,因此理论上每秒钟可以做100次磁盘搜索.

asp.net性能优化之程序与数据库优化方法

一, SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快.如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多.缺点:直到数据读完才可close掉于数据库教程的连接 (SqlDataReader 读数据是快速向前的.SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法.它使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据.DataRead

Mysql数据库优化方法小结

一.数据库设计 适度的反范式,注意是适度的 我们都知道三范式,基于三范式建立的模型是最有效保存数 据的方式,也是最容易扩展的模式.我们在开发应用程序时,设计的数据库要最大程度的遵守三范式,特别是对于OLTP型的系统,三范式是必须遵守的规则.当 然,三范式最大的问题在于查询时通常需要join很多表,导致查询效率很低.所以有时候基于性能考虑,我们需要有意的违反三范式,适度的做冗余,以达到提 高查询效率的目的.注意这里的反范式是适度的,必须为这种做法提供充分的理由.下面就是一个糟糕的实例: 在这里,为

多条件数据库查询的优化方法

在数据库编程中,管理人员需要经常从数据库中查询数据.当查询条件为确定时,我们可以明确用的SQL语句来实现,但是当查询条件为多个条件的动态组合时,查询语句会由于分支太多及IF语句的多重嵌套而变得相当复杂.在此,笔者提供了一种优化方法,运用本方法可以有效地减少查询语句的分支和数量以及IF条件语句的嵌套层数,从而提高程序的运行效率. 下面我们以一个简单的例子来说明,假设有一个名为employee的表,现在我们要从其中查询数据,条件有三个,由用户动态选择,如图1所示: 其中条件A.B.C之间是与的关系,

数据分析 大数据-数据库大数据的优化方法

问题描述 数据库大数据的优化方法 数据库的数据库达到数百亿上千亿的时候,查询数据库中数据会发生长时间卡顿,怎么才能优化?使大数据查询流畅??? 解决方案 那么大数量级的没做过,不过根据查询条件设置分区表是个不错的选择 解决方案二: 大数据量高并发访问的数据库优化方法大数据量高并发访问的数据库优化方法大数据量高并发的数据库优化 解决方案三: 如果没有分布式的条件,那可以考虑分库,但是分库也带来了查询的复杂性,综合考虑吧,另外就是查询时,按一定条件查询,不要全部查询,建好索引 解决方案四: 数据库

MySQL数据库优化详解_Mysql

mysql表复制                                                                               复制表结构+复制表数据 mysql> create table t3 like t1; mysql> insert into t3 select * from t1; mysql索引                                                                       

mysql数据库程序优化方法

mysql数据库程序优化方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小.例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了.同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字

千万级的mysql数据库与sql优化方法

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使