Oracle与MySQL性能比较

oracle优势: mysql

一、处理速度快,很是快 sql

二、安全级别高。支持快闪以及完美的恢复,即便硬件坏了 也能够恢复到故障发前的1s 数据库

三、几台数据库作负载数据库,能够作到30s之内故障转移 安全

四、网格控制,以及 数据仓库方面 也很是强大 oracle

oracle缺点: 函数

1.不开源 google

2.收费高 spa

至于mysql: 指针

1.号称世界最快的数据库,连yahoo、google都用它,又免费,前途无量 索引

2.可是,mysql没有事务的概念

Oracle数据库与MySQL数据库的主要区别以下:

0 组函数用法规则
 
   mysql 中组函数在 select 语句中能够随意使用,但在 oracle 若是查询语句中有组函数,那其余列名必须是组函数处理过的,或者是 group by 子句中的列 不然报错
 
   eg
 
   select name count money  from user  ;这个放在 mysql 中没有问题 oracle 中就有问题了.............
 
   2 自动增加的数据类型处理
 
   MYSQL 有自动增加的数据类型,插入记录时不用操做此字段,会自动得到数据值。 ORACLE 没有自动增加的数据类型,须要创建一个自动增加的序列号,插入记录时要把序列号的下一个值赋于此字段。
 
   CREATE SEQUENCE  序列号的名称 (最好是表名+序列号标记)  INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE
 
  其中最大的值按字段的长度来定, 若是定义的自动增加的序列号  NUMBER 6 最大值为 999999
 
   INSERT  语句插入这个字段值为: 序列号的名称. NEXTVAL
 
   3 单引号的处理
 
   MYSQL 里能够用双引号包起字符串, ORACLE 里只能够用单引号包起字符串。在插入和修改字符串前必须作单引号的替换:把全部出现的一个单引号替换成两个单引号。
 
   4 翻页的 SQL 语句的处理
 
   MYSQL 处理翻页的 SQL 语句比较简单,用 LIMIT  开始位置, 记录个数; PHP 里还能够用 SEEK 定位到结果集的位置。 ORACLE 处理翻页的 SQL 语句就比较繁琐了。每一个结果集只有一个 ROWNUM 字段标明它的位置, 而且只能用 ROWNUM<100 不能用 ROWNUM>80
 
  如下是通过分析后较好的两种 ORACLE 翻页 SQL 语句(  ID 是惟一关键字的字段名 ):
 
  语句一:
 
   SELECT ID  [FIELD_NAME ,... ] FROM TABLE_NAME WHERE ID IN   SELECT ID FROM SELECT ROWNUM AS NUMROW  ID FROM TABLE_NAME WHERE  条件 1 ORDER BY  条件
 
   80 AND NUMROW < 100   ORDER BY  条件 3
 
  语句二:
 
   SELECT * FROM  ((  SELECT ROWNUM AS NUMROW  c * from  select [FIELD_NAME ,... ] FROM TABLE_NAME WHERE  条件 1 ORDER BY  条件
 
   80 AND NUMROW < 100   ORDER BY  条件 3
 
   5 长字符串的处理
 
  长字符串的处理 ORACLE 也有它特殊的地方。 INSERT UPDATE 时最大可操做的字符串长度小于等于 4000 个单字节, 若是要插入更长的字符串, 请考虑字段用 CLOB 类型,方法借用 ORACLE 里自带的 DBMS_LOB 程序包。插入修改记录前必定要作进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操做。
 
   6 日期字段的处理
 
   MYSQL 日期字段分 DATE TIME 两种, ORACLE 日期字段只有 DATE ,包含年月日时分秒信息,用当前数据库的系统时间为 SYSDATE 精确到秒,或者用字符串转换成日期型函数 TO_DATE ‘2001 08 01’ ’YYYY MM DD’ )年-月-日  24 小时:分钟:秒 的格式 YYYY MM DD HH24 MI SS TO_DATE ()还有不少种日期格式, 能够参看 ORACLE DOC .日期型字段转换成字符串函数 TO_CHAR ‘2001 08 01’ ’YYYY MM DD HH24 MI SS’
 
  日期字段的数学运算公式有很大的不一样。 MYSQL 找到离当前时间 7 天用
 
   SUBDATE NOW (), INTERVAL 7 DAY ORACLE 找到离当前时间 7 天用
 
   SYSDATE   7
 
   MYSQL 中插入当前时间的几个函数是: NOW ()函数以 `'YYYY MM DD HH MM SS' 返回当前的日期时间,能够直接存到 DATETIME 字段中。 CURDATE ()以 ’YYYY MM DD’ 的格式返回今天的日期,能够直接存到 DATE 字段中。 CURTIME ()以 ’HH MM SS’ 的格式返回当前的时间,能够直接存到 TIME 字段中。例: insert into tablename  fieldname  values  now ())
 
  而 oracle 中当前时间是 sysdate
 
   7 空字符的处理
 
   MYSQL 的非空字段也有空的内容, ORACLE 里定义了非空字段就不允许有空的内容。按 MYSQL NOT NULL 来定义 ORACLE 表结构, 导数据的时候会产生错误。所以导数据时要对空字符进行判断,若是为 NULL 或空字符,须要把它改为一个空格的字符串。
 
   8 字符串的模糊比较
 
   MYSQL 里用 字段名  like '% 字符串 %' ORACLE 里也能够用 字段名  like '% 字符串 %'  但这种方法不能使用索引, 速度不快,用字符串比较函数  instr (字段名, ' 字符串 ' >0  会获得更精确的查找结果。
 
   9 程序和函数里,操做数据库的工做完成后请注意结果集和指针的释放。
相关文章
相关标签/搜索