首页 > 编程知识 正文

MySQL数据库优化,oracle优化sql

时间:2023-05-04 09:03:38 阅读:20175 作者:762

1 .优化Oracle优化Oracle优化首先是索引。 这是Oracle优化中最有效的方法

oracle优化的常见方法有几种。

1 .在需要频繁使用查询的字段中创建索引

2 .利用2.Oracle的分析方式进行数据优化。 Oracle的分析方式是自上而下、从右到左、自下而上的方式分析SQL,因此利用该原理,如果在from后面有三个以上的表连接查询,则将其他表中引用的表放在最后,在where后面有多个查询条件

3 .对于简单的查询SQL,oracle的执行顺序通常是1-from、2-where、3-group by、4-having、5-select、6-order by,所以它放在where之后

4 .使用exists查询的效率高于使用in,in的效率高于or,所以在exists中不使用in,不使用使用in的or

5 .可以使用=进行正确查询时,不要使用like这样的模糊查询。 模糊查询降低查询效率

6 .在处理大量数据时,以上效率高于以上。 例如,在相同的条件2和=3下,=3的效率比2稍高。 因为前者直接位于3,处理第三后数据,后者位于2,是从2向后推出后的第一个数据3。

使用合并代替更新。 使用merge的好处是,不需要扫描源表一次,也容易调整执行计划。 另一方面,update通常以类似于nested loop的方式在表之间进行连接,并将更新的表作为外部驱动表。 该表越大,执行效率越低。 因此,必须使用merge。

不像name is null那样在索引列上进行运算,不使用not (而不是或)来判断索引列。 如果索引列不使用null,优化程序将在不使用索引的情况下扫描所有表。

9 .如果模糊搜索通配符位于搜索词开头,则索引也无效;如果位于其他位置,则为select * fromstudentwherenamelike“% wish %”;

10 .避免使用select *,多表连接时尽量使用表和字段别名;

11 .如果可以使用truncate,则如果不使用delete,delete将生成大量日志,影响效率。

2 .索引2.1适合编制索引的特征1 )在频繁需要检索的列中,可以加快检索的速度

2 )作为主键的列强制该列的唯一性和组织表中数据的数组结构

3 )在连接中常用的列中,这些列主要是一些外键,可以加速连接;

4 )在需要根据范围搜索的列中创建索引。 因为索引已经排序,并且指定的范围是连续的;

5 )在经常需要排序的列中索引。 因为索引已经排序,所以查询可以利用索引排序来减少查询的排序时间。

6 )在WHERE子句中常用的列上建立索引,以加快条件的判断;

7 )基于某个范围的搜索,一般查询结果集适合采用小于表中记录数的30%; 基于非唯一性索引的搜索。

2.2不适合索引的特征1 )不要对查询中很少使用的列或引用的列进行索引。 这是因为这些列很少使用,因此没有索引不会加快查询的速度。 相反,由于索引增加,系统维护速度降低,空间要求增加。

2 )对于数据值少的列也不应该增加索引。 这是因为这些列的取值很少,就像人力资源表中的性别列一样。 在查询结果中,结果集中的数据行占表中数据行的很大比例。 也就是说,因为需要在表中搜索的数据行的比例很大。 增加索引不会显著提高搜索速度。

3 )不要向定义为blob数据类型的列中添加索引。 这是因为这些列的数据量相当大或值很少。

4 )修改性能远大于检索性能时,不应该编制索引。 这是因为修正性能和检索性能矛盾。 增加索引会提高搜索性能,但会降低修改性能。 减少索引会提高修改性能,降低搜索性能。 因此,如果修改的性能远远大于搜索的性能,请不要索引。

2.3索引的分类索引大致分为两种,一种是B-tree索引,另一种是位图索引(Bitmapt ),Oracle默认创建的是B-tree索引。 简而言之,两者的区别在于B-tree索引适合于生成数据差大的字段,例如名称、学校号码、位图索引适合于生成性别等数据差小的字段。 但是,在实际的业务运营中,需要根据情况判断是否使用索引,具体使用哪个索引。 例如,在一个字段sex中,他只有男性和女性,数据量相同。 建立索引后,实际上只能过滤大部分数据。 例如,如果字段is_true,则他的结果只有“是”和“否”,但“否”的数据量相对较少,因此索引始终对需要检查“否”的数据有效。

B-tree的特点:

大量添加、删除和更改(OLTP )

不能使用包含OR操作符的查询;

适合基数高的列(唯一值多) )。

典型树结构;

每个节点都是数据块

r> 大多都是物理上一层、两层或三层不定,逻辑上三层;
叶子块数据是排序的,从左向右递增;
在分支块和根块中放的是索引的范围;

Bitmapt 特点:
适合与决策支持系统;
做UPDATE代价非常高;
非常适合OR操作符的查询;
基数比较少的时候才能建位图索引;

不常见的还有复合索引、函数索引、哈希索引和分区索引,复合索引也就是基于多个列创建的索引,这种索引只有在第一个列被where子句使用到时,优化器才会使用到该索引。

注:索引是把双刃剑,虽然建立索引能有效地提高查询效率,但索引也需要占大量的表空间和物理空间,后期还需要经常维护,所以建立索引要慎重选择。

2.4

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。