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 程序和函數裏,操做數據庫的工做完成後請注意結果集和指針的釋放。
相關文章
相關標籤/搜索