freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

sql編寫規(guī)范和優(yōu)化講稿-預(yù)覽頁

2025-03-26 20:13 上一頁面

下一頁面
 

【正文】 特別是大表的字段,應(yīng)該建立索引; 索引應(yīng)該建在選擇性高的字段上; SQL優(yōu)化 (oracle) ?基于索引的 SQL語句優(yōu)化 索引應(yīng)該建在小字段上,對于大的文本字段甚至超長字段,不要建索引; 復(fù)合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替: A、正確選擇復(fù)合索引中的主列字段,一般是選擇性較好的字段; B、復(fù)合索引的幾個字段是否經(jīng)常同時以 AND方式出現(xiàn)在 Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復(fù)合索引;否則考慮單字段索引; SQL優(yōu)化 (oracle) ?基于索引的 SQL語句優(yōu)化 C、如果復(fù)合索引中包含的字段經(jīng)常單獨出現(xiàn)在Where子句中,則分解為多個單字段索引; D、如果復(fù)合索引所包含的字段超過 3個,那么仔細考慮其必要性,考慮減少復(fù)合的字段; E、如果既有單字段索引,又有這幾個字段上的復(fù)合索引,一般可以刪除復(fù)合索引; SQL優(yōu)化 (oracle) ?基于索引的 SQL語句優(yōu)化 頻繁進行數(shù)據(jù)操作的表,不要建立太多的索引; 刪除無用的索引,避免對執(zhí)行計劃造成負面影響; 以上是一些普遍的建立索引時的判斷依據(jù)。 SQL優(yōu)化 (oracle) ?避免對列的操作 任何對列的操作都可能導(dǎo)致全表掃描,這里所謂的操作包括數(shù)據(jù)庫函數(shù)、計算表達式等等,查詢時要盡可能將操作移至等式的右邊,甚至去掉函數(shù)。yyyymmdd39。5378%39。yyyymmdd39。1039。 ,39。2023030139。2023010139。把 39。 SQL優(yōu)化 (oracle) ?盡量去掉 IN、 OR“ 含有 IN、 OR的 Where子句常會使用工作表,使索引失效;如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開;拆開的子句中應(yīng)該包含索引。139。139。 以上語句由于其中包含了 ,執(zhí)行計劃中用了全表掃描( TABLE ACCESS FULL),沒有用到 state字段上的索引。 SQL優(yōu)化 (oracle) ?去掉 Where子句中的 IS NULL和 IS NOT NULL Where字句中的 IS NULL和 IS NOT NULL將不會使用索引而是進行全表搜索,因此需要通過改變查詢方式,分情況討論等方法,去掉 Where子句中的 IS NULL和IS NOT NULL。按照前面說的索引建立的規(guī)則,“選擇性不高的字段不應(yīng)該建立索引,該字段只有 8種取值,索引值的重復(fù)率很高,索引選擇性明顯很低,因此不建索引。 繼續(xù)上面 7的例子, ORACLE缺省認定,表中列的值是在所有數(shù)據(jù)行中均勻分布的,也就是說,在一百萬數(shù)據(jù)量下,每種 DisposalCourseFlag值各有 。 比如: select * from serviceinfo where DisposalCourseFlag=1 。 SQL優(yōu)化 (oracle) ? 屏蔽無用索引 繼續(xù)上面 8的例子,由于實際查詢中,還有涉及到DisposalCourseFlag=6的查詢,而此時如果用上該字段上的索引,將是非常不明智的,效率也極低。 。 例 6: select * from city where name like ‘%S%’ 以上查詢的執(zhí)行計劃用了全表掃描( TABLE ACCESS FULL),如果能夠修改為: select * from city where name like ‘S%’ 那么查詢的執(zhí)行計劃將會變成( INDEX RANGE SCAN),成功的利用了 name字段的索引。例如下例通過三個獨立查詢: 例 8: 1) select count(*) from emp where sal1000。 這樣查詢的結(jié)果一樣,但是執(zhí)行計劃只進行了一次全表查詢 SQL優(yōu)化 (oracle) ?使用 nls_date_format 例 9: select * from record where to_char(ActionTime,39。 這個查詢的執(zhí)行計劃將是全表查詢,如果我們改變nls_date_format, SQLalert session set nls_date_formate=’MM’。 但是這種查詢在客服系統(tǒng)又經(jīng)常使用,我們可以創(chuàng)建一個帶有 substr函數(shù)的基于函數(shù)的索引, create index emp_ename_substr on eemp ( substr(ename,1,2) )。然而,如果我們使用基于函數(shù)的索引就不會產(chǎn)生這樣的問題,因為 Oracle只有在查詢使用了匹配的內(nèi)置函數(shù)時才會使用這種類型的索引。Oracle會僅僅訪問這個索引分區(qū),而且會在這個分區(qū)上調(diào)用一個此索引范圍的快速全掃描。 SQL優(yōu)化 (oracle) ?決定使用全表掃描還是使用索引 和所有的秘笈一樣,最后一招都會又回到起點,最后我們來討論一下是否需要建立索引,也許進行全表掃描更快。 SQL優(yōu)化 (oracle) ?決定使用全表掃描還是使用索引 因此,有一個索引范圍掃描的總體原則是: 1)對于原始排序的表 僅讀取少于表記錄數(shù) 40%的查詢應(yīng)該使用索引范圍掃描。 SQL優(yōu)化 (oracle) ? 以上的十八招式,是完全可以相互結(jié)合同時運用的。 ? 另外,值得注意的是:隨著時間的推移和數(shù)據(jù)的累計與變化,ORACLE對 SQL語句的執(zhí)行計劃也會改變,比如:基于代價的優(yōu)化方法,隨著數(shù)據(jù)量的增大,優(yōu)化器可能錯誤的不選擇索引而采用全表掃描。當數(shù)據(jù)庫設(shè)計發(fā)生變化,包括更改表結(jié)構(gòu):字段和索引的增加、刪除或改名等;業(yè)務(wù)邏輯發(fā)生變化:如查詢方式、取值范圍發(fā)生改變等等
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1