Oracle与Mysql应用总结

数据库
以前开发的时候,一直在使用oracle,甚至参加过oracle的培训,考过Oracle Database 10g Administrator I,自认对oracle还算有些了解,不过最近在做一个分布式数据系统的测试的时候,才有“学到用时方恨少”的感悟。下文中将将为大家带来详细的关于Oracle与Mysql的应用总结。

导读:在以前开发的时候,一直在使用oracle,甚至参加过oracle的培训,考过Oracle Database 10g Administrator I,自认对oracle还算有些了解,不过最近在做一个分布式数据系统的测试的时候,才有“学到用时方恨少”的感悟。Oracle与Mysql的应用是怎样的呢?在此把最近总结的一些东西陆续跟测试 部的同学们一起分享吧。

1. in如何与list绑定:

一个带in子查询的语句相信对很多人来说都是司空见惯了的,例如:「select * from normaltbl_ora where pk in (1,2,3,4)」、「select * from normaltbl_ora where name in (“manhong”,”yihuan”,”gongyangyu”,”yaolingling”) 」。但是如果in的查询字段上没有建立索引或者无法通过索引查询,那数据库会将该字段与in里面的每个值都进行比较运算,如果记录数有成千上万条甚至以 上,会明显感觉到SQL的CPU开销过大甚至难以负荷,过量的使用这样的语句,将引起数据库的大量硬解析与共享池的SQL碎片。所以,在实际的应用过程 中,我们则可以采用list的方式将这些in字段绑定起来。接下来具体描述如何创建in与list绑定,以及如何去使用它们。

a. 创建数据类型

数值列表数据类型

字符串列表数据类型

b. 创建相关函数

数值列表函数

字符串列表函数

c. 查询

通过数值列表函数查询

通过字符串列表函数查询

2. 关于Hint的使用:

在做分布式数据系统测试的时候,发现它们有一个非常关键的技术点是生成sql的执行计划。而Hint就是这样的一种机制,用来告诉优化器按照我们的 告诉它的方式生成执行计划。Hint可以基于表连接的顺序、表连接的方法、访问路径、并行度等规则对dml语句、或者查查询语句产生作用,通过它我们可以 实现:

1) 使用的优化器的类型

2) 基于代价的优化器的优化目标,是all_rows还是first_rows。

3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。

4) 表之间的连接类型

5) 表之间的连接顺序

6) 语句的并行程度

a. Hint语法:

/* */常写代码但较少接触Hint的同学们可千万别误认为这只是代码的简单注释。

举几个简单的应用例子:

i. 尽快地显示前5行记录

ii. 再比如说大数据量、分库分表查询中比较常用到的并行查询操作

试验的时候虽然数据量不大,但是效果倒是还挺明显的,速度之间比对接近于1:2。像淘宝这种大数据量应用,每张数据表都有过千万甚至过亿数据的时 候,使用parallel Hint效果会非常明显,当然数据库主机的CPU的核数越多,系统当前负载越低的时候,parallel Hint的优势将会越加明显。

关于Hint的使用,要尽可的自身去体会才能真正理解其作用,在遇到使用Hint的地方大家可以多关注一下,有时间也可以自己做一些调查验证。

【编辑推荐】

  1. Oracle修补Java中存在十年的bug
  2. Oracle承诺对MySQL不会放弃只会更好
  3.  MySQL十大优化技巧
  4. MySQL数据库的无缝迁移
责任编辑:迎迎 来源: qa.taobao.com
相关推荐

2010-05-06 17:30:56

Oracle查询语句

2011-03-15 11:05:03

2010-04-28 17:14:38

Oracle EXPL

2011-08-19 09:30:42

分页查询SQL ServerMySQL

2009-12-21 13:34:41

OSGi

2010-04-23 08:56:12

Oracle DRCP

2019-10-28 14:37:10

MySQL 数据库收藏

2018-06-08 11:28:44

MySQLlocalhost127.0.0.1

2011-03-11 16:42:51

Oracle数据库视图

2010-05-06 10:09:44

Oracle in

2011-07-22 09:33:15

OracleMySQLPostgreSQL

2018-01-19 12:33:17

数据库OracleMySQL

2011-05-19 14:29:49

Oraclerownum

2011-07-27 18:55:02

Oracle数据库DBLINK操作

2011-04-12 11:32:31

Oraclerownum用法

2010-04-14 13:22:10

Oracle系统函数

2010-03-29 11:06:22

Oracle Spat

2011-05-17 10:49:55

OracleSQL Server

2010-06-13 13:50:02

MySQL存储引擎

2010-05-21 10:58:19

MySQL存储引擎
点赞
收藏

51CTO技术栈公众号