偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle中存儲(chǔ)過(guò)程和Sql語(yǔ)句的優(yōu)化重點(diǎn)

數(shù)據(jù)庫(kù) Oracle
Oracle數(shù)據(jù)庫(kù)是功能性很好的數(shù)據(jù)庫(kù)管理系統(tǒng),至今為止在數(shù)據(jù)庫(kù)市場(chǎng)中仍占有主要份額,下文中將為大家講解Oracle中存儲(chǔ)過(guò)程和Sql語(yǔ)句的優(yōu)化重點(diǎn) ,希望對(duì)大家能夠有所幫助。

Oracle數(shù)據(jù)庫(kù)是功能性很好的數(shù)據(jù)庫(kù)管理系統(tǒng),至今為止在數(shù)據(jù)庫(kù)市場(chǎng)中仍占有主要份額,下文中將為大家講解Oracle中存儲(chǔ)過(guò)程和Sql語(yǔ)句的優(yōu)化重點(diǎn) ,希望對(duì)大家能夠有所幫助。

1.全表掃描和索引掃描

大數(shù)據(jù)量表盡量要避免全表掃描,全部掃描會(huì)按順序每條記錄掃描,對(duì)于>100萬(wàn)數(shù)據(jù)表影響很大。

 

Oracle中通過(guò)RowID訪問(wèn)數(shù)據(jù)是最快的方式

 

對(duì)字段進(jìn)行函數(shù)轉(zhuǎn)換,或者前模糊查詢都會(huì)導(dǎo)致無(wú)法應(yīng)用索引而進(jìn)行全表掃描

 

對(duì)Oracle共享池和緩沖區(qū)中的Sql必須要大小寫都完全用上才能夠匹配上

 

2.順序問(wèn)題

 

Oracle按照從右到左的順序?qū)?shù)據(jù)表進(jìn)行解析。因此From最后面的表為基礎(chǔ)表,一般要選擇記錄數(shù)最少的表作為基礎(chǔ)表。

 

對(duì)于Where條件的順序,過(guò)濾到最大查詢記錄數(shù)量的條件必須寫在Where條件的結(jié)尾處。

 

Where條件中涉及到使用復(fù)雜函數(shù)判定的必須注意要寫到Where條件的最前面

 

3.索引方面

 

記錄數(shù)少的表保留有主鍵索引就可以了,不要再去建其它索引,全表掃描也很快

 

索引最好單獨(dú)建立表空間,必要時(shí)候?qū)λ饕M(jìn)行重建

 

必要時(shí)候可以使用函數(shù)索引,但不推薦使用

 

Oracle中的視圖也可以增加索引,但一般不推薦使用

 

Sql語(yǔ)句中大量使用函數(shù)時(shí)候會(huì)導(dǎo)致很多索引無(wú)法使用上,要針對(duì)具體問(wèn)題分析

 

4.其它

避免使用Select ,因?yàn)橄到y(tǒng)需要去幫你將轉(zhuǎn)換為所有的列名,這個(gè)需要額外去查詢數(shù)據(jù)字典。

 

Count(1)和Count()差別不大。

 

多使用Decode函數(shù)來(lái)作簡(jiǎn)單的代碼和名稱間的轉(zhuǎn)換,以減少表關(guān)聯(lián)

 

使用Truncate替代delete來(lái)刪除記錄,但Truncate數(shù)據(jù)不記錄日志,無(wú)法進(jìn)行回滾

 

對(duì)于復(fù)雜的存儲(chǔ)過(guò)程可以多次提交的數(shù)據(jù)的要多分多次Commit,否則長(zhǎng)事務(wù)對(duì)系統(tǒng)性能影響很大

 

Distinct和Having子句都是耗時(shí)操作,應(yīng)該盡可能少使用

 

在不需要考慮重復(fù)記錄合并時(shí)候用Union All來(lái)代替Union

 

使用顯性游標(biāo)而不使用隱性游標(biāo),特別是大數(shù)據(jù)量情況下隱性游標(biāo)對(duì)性能影響很大

 

是否使用函數(shù)的問(wèn)題

 

用直接的表關(guān)聯(lián)來(lái)代替Exist.用Exist或Not Exists來(lái)代理In。In進(jìn)行子查詢效率很差。

 

5.SQL語(yǔ)句分析

 

通過(guò)SQLPLUS中的SET TRACE 功能對(duì)Sql語(yǔ)句的性能進(jìn)行分析

 

通過(guò)Toad或PL/SQL Developer對(duì)語(yǔ)句的性能進(jìn)行和索引的使用情況進(jìn)行分析

 

對(duì)Oracle缺省的優(yōu)化不滿意可以強(qiáng)制使用Hint,但一般不推薦使用

 

對(duì)Flag等只存儲(chǔ)是或否信息的字段,一般不推薦建立索引。必要可以采用位圖索引

 

存在遞歸查詢情況如果關(guān)聯(lián)Table太多對(duì)性能會(huì)造成較大影響,往往推薦采用臨時(shí)表轉(zhuǎn)為分步驟操作提高性能

 

盡量使用表關(guān)聯(lián)查詢而不使用函數(shù),但涉及類似于代碼表要重復(fù)關(guān)聯(lián)多次取數(shù)據(jù)問(wèn)題時(shí)候又適合使用函數(shù)

上文中就Oracle中存儲(chǔ)過(guò)程和Sql語(yǔ)句的優(yōu)化重點(diǎn)作出了詳細(xì)的講解,希望大家都能夠從中有所收獲,這樣,在以后的工作中遇到類似問(wèn)題就能夠輕松解決。

 

責(zé)任編輯:迎迎 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2010-09-07 15:12:25

SQL語(yǔ)句優(yōu)化

2009-11-05 18:07:33

Oracle導(dǎo)出sql

2011-04-11 17:28:50

oracle存儲(chǔ)select語(yǔ)句

2011-03-31 10:38:28

SQL Server編寫優(yōu)化

2010-04-16 12:58:48

Oracle sql

2010-04-13 15:04:16

Oracle優(yōu)化

2010-09-07 11:41:24

SQL語(yǔ)句

2010-04-29 14:06:40

Oracle SQL

2017-08-07 15:52:33

Oracleonnect by優(yōu)化

2010-11-12 12:01:08

Oracle存儲(chǔ)過(guò)程

2010-09-07 16:46:56

SQL語(yǔ)句nsert

2009-03-04 09:06:56

優(yōu)化sqlOracle

2010-09-10 14:09:23

2010-09-03 15:08:03

SQLselect語(yǔ)句

2010-09-06 11:24:32

SQL Server語(yǔ)句

2010-09-25 16:00:38

sql存儲(chǔ)過(guò)程

2010-04-12 16:12:07

Oracle HINT

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL

2010-07-06 14:06:52

SQL Server存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)