`
wb284551926
  • 浏览: 538754 次
文章分类
社区版块
存档分类
最新评论

数据库查询优化原则(转载)

 
阅读更多
数据库查询优化原则
步骤/方法
1、1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  
2、2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
  select id from t where num is null
  可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
  select id from t where num=0 
 
3、3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4、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、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、6.下面的查询也将导致全表扫描:
  select id from t where name like '%abc%'
  若要提高效率,可以考虑全文检索。
7、7. 如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
  select id from t wherenum=@num
  可以改为强制查询使用索引:
  select id from t with(index(索引名)) wherenum= @num  
8、8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
  select id from t where num/2=100
  应改为:
  select id from t where num=100*2
9、9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
  select id from t where substring(name,1,3)='abc'--name以abc开头的id
  select id from t where datediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id
 
原帖地址:http://jingyan.baidu.com/article/154b463188c29928ca8f4181.html
分享到:
评论

相关推荐

    分布式数据库查询优化算法综述

    分布式数据库查询优化算法综述,介绍了分布式数据库查询优化的基本思想

    数据库查询优化算法

    一共有三种经典的查询优化算法,真的值得一看,懂的下吧....

    Oracle数据库查询优化的方法

    Oracle数据库查询优化的方法 Oracle数据库查询优化的方法

    数据库查询优化器艺术

    数据库查询优化器的艺术,深入剖析数据库查询器实现源码及原理。

    数据库查询优化论文

    这是一片详细的介绍数据库查询优化的研究性论文。

    PB对数据库查询的优化.doc

    PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库查询的优化.PB对数据库...

    基于MySQL的数据库查询性能优化.pdf

    基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf...

    遗传算法和实时数据库规则结合的数据库查询优化方案设计.pdf

    遗传算法和实时数据库规则结合的数据库查询优化方案设计.pdf

    分布式数据库查询优化

    共7页,以前做课程作业时通过搜集资料、自己整理的,先介绍了分布式查询的背景和查询方法,然后引出了查询优化的目标,最后用大部分的篇幅分布式查询优化的各种方法。

    北邮数据库实验8 数据查询分析优化实验

    4. 参照文档“数据库物理设计及查询优化”中SQL语句查询优化相关内容,在多种情况下,对比实现方式不同但查询结果相同的等价SQL语句在执行计划和成本方面的差异,加深对查询优化的理解,进行书写优化SQL语句的初步...

    论文研究-基于粒子群算法的数据库查询优化.pdf

    研究粒子群算法在数据库查询优化中的应用问题。为了解决大型数据库信息检索困难、查询效率低的问题,提出了一种基于粒子群算法优化数据库查询技术方案。算法提出了一种数据库查询执行计划代价模型,主要包括了查询多...

    论文研究-密文数据库查询优化技术的研究 .pdf

    密文数据库查询优化技术的研究,李刚彪,闫宏印,为了解决数据库加密后查询效率低的问题,针对数据库加密技术的实际应用,提出了一些解决方案。通过对数值型密文数据使用标志位,

    面向程序员的数据库访问优化原则

    开发人员:如果你是做数据库开发,那本文的内容...DBA(数据库管理员):大型数据库优化的知识非常复杂,本文只是从程序员的角度来谈性能优化,DBA除了需要了解这些知识外,还需要深入数据库的内部体系架构来解决问题

    数据库的查询优化技术

    数据库的查询优化技术

    探究数据库查询优化器原理及发展方向

    数据库查询优化器是RDBMS服务器的一个组成部分。对于基于成本的优化,数据库查询优化器的任务是,通过产生可供选择的执行计划,找到最低估算成本的执行计划,来优化一条SQL语句。它在SQL语句性能表现上扮演了至关...

    基于Java的Sagacity SQLToy数据库查询优化设计源码

    本项目是一个基于Java语言开发的Sagacity SQLToy数据库查询优化工具,包含420个文件,主要文件类型包括Java源代码、XML配置文件、BAT批处理文件、文本文件、Git忽略文件、Markdown文档、图片、属性文件和XSD文件。...

    数据库查询优化

    本文档描述了数据库中如何对数据库进行查询优化的技术。。。。

    论文研究-数据库查询优化技术的历史、现状与未来.pdf

    传统的查询树优化方法,即基于左线性树、右线性树、浓密树、操作森林的并行数据库查询优化方法,各有优劣,对其的研究比较深入、成熟;基于多重加权树的查询优化方法,研究了其并行查询计划模型、并行查询计划的复杂...

Global site tag (gtag.js) - Google Analytics