宏观:
1.缓存。在持久层或持久层之上做缓存。 从数据库中查询出来的数据先放入缓存中,下次查询时,先访问缓存,如果未命中则查询数据库。
2.表分区和拆分.无论是业务逻辑上的拆分还是无业务含义的分区。
3.提高磁盘速度.这包括RAID和其他磁盘文件分段的处理。主要的思想是提高磁盘的并发度(多个物理磁盘存放同一个文件)。
微观:
表设计方面:
1.字段冗余.减少跨库查询和大表连接操作。
2.数据库表的大字段剥离.保证单条记录的数据量很小。
3.恰当地使用索引, 甚至是多级索引。
查询优化方面:
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20可以这样查询:
select id from t where num=10 union all select id from t where num=20
5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
6.下面的查询也将导致全表扫描:
select id from t where name like '%abc%' 若要提高效率,可以考虑全文检索。
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20可以这样查询:
select id from t where num=10 union all select id from t where num=20
5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
6.下面的查询也将导致全表扫描:
select id from t where name like '%abc%' 若要提高效率,可以考虑全文检索。
7.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。
8.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
9.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
10.避免频繁创建和删除临时表,以减少系统表资源的消耗。
相关推荐
怎样优化数据库查询,提高优化效率?.pdf
第2课 数据库查询优化技术总揽 综述查询优化技术范围,包括查询重用、查询重写规则、查询算法优化、并行查询优化等 综述逻辑查询优化,包括子查询的优化、视图重写、等价谓词重写、条件化简、连接消除、非SPJ的优化...
为了解决大型数据库信息检索困难、查询效率低的问题,提出了一种基于粒子群算法优化数据库查询技术方案。算法提出了一种数据库查询执行计划代价模型,主要包括了查询多链接次序以及副本的选择问题,准确定义了数据库...
一共有三种经典的查询优化算法,真的值得一看,懂的下吧....
PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库...
分布式数据库查询优化算法综述,介绍了分布式数据库查询优化的基本思想
Oracle数据库查询优化的方法 Oracle数据库查询优化的方法
sql查询优化 提高MySQL数据库查询效率的几个技巧
基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf...
数据库查询优化器的艺术,深入剖析数据库查询器实现源码及原理。
这是一片详细的介绍数据库查询优化的研究性论文。
熟悉了解SQL SERVER数据库中查询优化的使用,理解数据库查询优化的基本概念。 2. 掌握利用SQL Server Management Studio提供的机制,分析对比形式不同、执行结果等价的不同SQL语句的查询执行计划的执行成本和执行...
HorsePower旨在使用现代硬件优化数据库查询。 它的核心是HorseIR ,它是一种经过精心设计的基于数组的中间表示(IR),用于数据库查询。 基于HorseIR,可以将复杂的编译器优化应用于数据库操作。 此外,使用数组编程...
怎样优化数据库查询,使其速度更快。 索引的建立。
共7页,以前做课程作业时通过搜集资料、自己整理的,先介绍了分布式查询的背景和查询方法,然后引出了查询优化的目标,最后用大部分的篇幅分布式查询优化的各种方法。
MSSQL 2005 通过等待优化数据库
遗传算法和实时数据库规则结合的数据库查询优化方案设计.pdf
怎样提高数据库查询效率 怎样提高数据库查询效率 怎样提高数据库查询效率
数据库的查询优化技术