日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP 查询性能提高之我见

發(fā)布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP 查询性能提高之我见 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?索引簡介:

各位應(yīng)該都知道,我們說到數(shù)據(jù)庫的查詢速度優(yōu)化問題,不得不提到索引,它是提高查詢性能的重要方面(當(dāng)然同時它會影響其它修改類SQL的性能)。通俗的講,就像我們讀一本書不得不有個目錄,索引就相當(dāng)我們每本書的目錄,而書中的實(shí)際內(nèi)容就相當(dāng)我們某個具體的數(shù)據(jù)表。要在書中查找某部分內(nèi)容的時候,我們不會一頁一頁去翻書,而是先從目錄中找到相關(guān)內(nèi)容所在頁碼,然后再按頁碼去找相關(guān)內(nèi)容,從而大大提高了查找速度。關(guān)于各類數(shù)據(jù)庫的索引知識,實(shí)在是太多太復(fù)雜,在此不敢多說,我們主要來說說SAP概念上的索引。

?

SAP表索引重要分兩種:

1、? 主索引,它是依據(jù)表的主關(guān)鍵字自動建立的(因為一個滿足第三范式的數(shù)據(jù)表都會有一個主關(guān)鍵字,所以每個表都應(yīng)該有一個主索引,如果主索引丟失,會有相應(yīng)的錯誤提示)

2、? 二級索引,簡單的說主索引就是除主索引以外的索引,它與主索引的主要區(qū)別就是,主索引表的物理排列次序和表的物理排列次序是相同的。由于這種特性,在查詢批量數(shù)據(jù)的時候,主索引可以按照地址段去表里面取數(shù)據(jù),而二級索引可能同樣要一個一個地去數(shù)據(jù)表中取數(shù)據(jù),導(dǎo)致利用主索引比利用二級索引查詢數(shù)據(jù)要快得多(當(dāng)然如果是查詢單條記錄的話,兩者的性能就是一樣的)。

在SAP中查看數(shù)據(jù)表索引的方法:

查看主索引:SE11進(jìn)入數(shù)據(jù)字典初始界面——》輸入表名點(diǎn)顯示——》字段。現(xiàn)在我們看到的主鍵欄位上打鉤的字段就是我們的主鍵字段,同時依據(jù)它建立的默認(rèn)主索引名稱為:00。

查看二級索引:SE11進(jìn)入數(shù)據(jù)字典初始界面——》輸入表名點(diǎn)顯示——》索引。將彈出此表的所有二級索引的列表,然后你可以雙擊每一行去查看每個索引的詳細(xì)信息。

?

以上是索引的一些簡單知識,它對我們查詢語句中WHERE條件的設(shè)計至關(guān)重要。

?

SAP SQL語句優(yōu)化:

1、? 在查詢語句的SELECT取字段列表中,我們應(yīng)該盡量避免用“SELECT *”,而應(yīng)該取多少字段我們就列多少字段。這樣做的理由有三:

一、當(dāng)使用“SELECT *”的時候,查詢在執(zhí)行的時候是會將“*”解析為相應(yīng)的字段的,這無疑需要花費(fèi)時間。

二、大量的無用的字段信息的取出是要占用數(shù)據(jù)庫的DATA CACH空間的(這理所當(dāng)然的會占用其他有用數(shù)據(jù)的空間,引起數(shù)據(jù)置換),大家知道,我們在從數(shù)據(jù)庫中去數(shù)據(jù)的時候,首先會到緩存中去查找有沒有相同的數(shù)據(jù),如果有就直接從緩存中取,如果沒有則要去讀取數(shù)據(jù)文件,而同樣的數(shù)據(jù)從CACH中取比從數(shù)據(jù)文件中取大約要快10~100倍。

三、SAP在設(shè)計的時候為了提高數(shù)據(jù)查詢性能本身也設(shè)計了緩存(SAP的緩存包括公共緩存及用于存儲用戶特有背景信息的緩存,這方面的內(nèi)容有時間再和大家詳談),而此處的緩存和數(shù)據(jù)庫的患存類似的是,多余的信息同樣會占用空間。并且SAP用戶從緩存中取背景數(shù)據(jù)到用戶私有緩存區(qū)時,是按照一個固定的大小一部分一部分取的,這樣多余的信息無疑會增加SAP用戶讀取背景信息的次數(shù),增加背景信息轉(zhuǎn)入轉(zhuǎn)出時間,從而降低性能!

?

?

?

2、? WHERE條件中索引(包括主索引和二級索引)限制字段的排列次序,分兩種情況:

?

一、????????????? 索引字段都在查詢的WHERE條件中,此種情況,我們可以不注意限制字段的排列次序,效果都一樣,因此不多說。

二、????????????? 當(dāng)某個索引中的某些字段在WHERE條件中,而某些又不在時候,我們應(yīng)該嚴(yán)格按照索引中字段的排列次序來在WHERE條件中安排字段次序,因為數(shù)據(jù)庫它在查找索引表的時候,是嚴(yán)格按照索引次序來在索引表中查詢地址信息的。另,當(dāng)某幾個連續(xù)的索引字段中的一個不在WHERE條件中的時候,其實(shí)此字段后的索引字段對性能的提高已經(jīng)失去了意義。例如:所以A,它包括A1、A2、A3、A4四個索引字段,當(dāng)我們在WHERE條件中用到A1、A2、A4,此時A4其實(shí)在索引表中查詢數(shù)據(jù)地址段的時候已經(jīng)不會用到,也就失去了意義(當(dāng)然限制在具體的數(shù)據(jù)表中還是有限制性的,只是不能提高性能而已)。

?

3、? WHERE條件中非索引字段的排列次序。應(yīng)該將篩選作用大的字段排在右邊(專業(yè)地講就是將選擇性大的字段放在右邊),因為SQL中解析WHERE條件的次序是從右至左的,這樣先最大限度地篩選數(shù)據(jù),有利于提高數(shù)據(jù)查詢性能。

?

4、? 當(dāng)要進(jìn)行某列或某幾列數(shù)據(jù)的聚合運(yùn)算時候,讓這中運(yùn)算在數(shù)據(jù)庫中用聚合函數(shù)(SUM、AVG、MAX……)來實(shí)現(xiàn)呢,還是先將數(shù)據(jù)取出來,然后到應(yīng)用程序中進(jìn)行運(yùn)算處理。這就要視情況而定,大量的數(shù)據(jù)聚合函數(shù)運(yùn)用會極大地影響數(shù)據(jù)庫性能,而傳輸大量的原始數(shù)據(jù)到應(yīng)用程序,在處理會在增加網(wǎng)絡(luò)的傳輸量(當(dāng)數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器不在同一臺機(jī)器上時)。本人建議應(yīng)該盡量減少數(shù)據(jù)層次的運(yùn)算,因為數(shù)據(jù)庫的性能是會影響整個系統(tǒng)的,而網(wǎng)絡(luò)傳輸量大影響的性能可能只影響某個用戶(這里沒有考慮等待資源的問題)。

?

5、? 在WHERE語句中應(yīng)該盡量避免使用IN關(guān)鍵字,而應(yīng)該根據(jù)具體的情況用LIKE、<>、=等關(guān)鍵字或運(yùn)算符號去替代它。經(jīng)驗表明,IN關(guān)鍵字的查詢性能是最差的。

?

6、? ?不要循環(huán)從數(shù)據(jù)庫中查詢數(shù)據(jù)。即,當(dāng)你運(yùn)行兩個查詢,其中第二個查詢要以第一個查詢的結(jié)果為條件的時候,你不應(yīng)該先將第一個查詢的數(shù)據(jù)放入一個內(nèi)表,然后循環(huán)這個內(nèi)表,去執(zhí)行第二個查詢。而應(yīng)該先在缺少第一個內(nèi)表數(shù)據(jù)的情況下,將第二個內(nèi)表的數(shù)據(jù)取出來,然后再在應(yīng)用程序中去匹配處理。這樣會大大地減少訪問數(shù)據(jù)庫的次數(shù),減少讀取IO,特別是數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器不在同一臺機(jī)器上時,更是萬分必要。

?

7、? 用SELECT語句取數(shù)據(jù)的時候,應(yīng)該讓SELECT后面跟的字段次序與你要放入的內(nèi)表的次序一樣。比如你定義了內(nèi)表BEGIN OF ITAB,

??????????????????? A1 AS ..

??????????????????? A2 AS ..

??????????????????? A3 AS ..

??????????????????? A4 AS ..

??????????????????? END OF ITAB.

那你在查詢語句中也應(yīng)該對應(yīng)為SELECT A1 A2 A3 A4 INTO ITAB FROM……..。

?

以上SQL語句中的一些簡單原則,當(dāng)然具體問題還得具體分析,所以懂的每種數(shù)據(jù)SQL優(yōu)化器的原理,及SQL語句的執(zhí)行計劃,然后靈活運(yùn)用才是最重要的。

?

并且由于現(xiàn)在我們系統(tǒng)剛上線,系統(tǒng)性能比較好,暫時體現(xiàn)不出優(yōu)化的顯著效果,但長時間運(yùn)行后效果就會就會非常明顯,正如我們不能很容易地區(qū)分一秒鐘和兩秒鐘的差別,但很能很容易區(qū)分一個小時和兩個小時的差別一樣。

?

習(xí)慣決定風(fēng)格,所以各位在讓自己程序?qū)崿F(xiàn)功能的同時,更應(yīng)該注意程序的可讀性、健壯性及可用性。一個劣質(zhì)性能的程序在大系統(tǒng)中必然會被淘汰,因為它不僅自己運(yùn)行速度慢還會影響其它程序的運(yùn)行性能。

總結(jié)

以上是生活随笔為你收集整理的ABAP 查询性能提高之我见的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产不卡 | 黄色录像三级 | 色翁荡息又大又硬又粗又爽 | 国产又粗又黄又猛 | 亚洲性欧美色 | 91免费版黄色 | 国产aⅴ爽av久久久久成人 | 噜噜噜久久,亚洲精品国产品 | 亚洲少妇毛片 | 黄色工厂这里只有精品 | 国产激情对白 | 亚洲中出| 亚洲人成免费 | 丁香亚洲 | 久久久午夜精品 | 久久精品丝袜高跟鞋 | 性感少妇av | 亚洲v天堂| 久久人人插| 在线观看国产黄 | 窝窝午夜看片 | 精品日韩在线观看 | 一区二区免费播放 | 色噜噜在线 | av一区不卡| 日韩在线电影一区二区 | 中文字幕首页 | 国产成人无码精品久久 | 欧美激情视频一区 | 日本国产视频 | 在线观看欧美亚洲 | 亚洲日本中文字幕在线 | 国产精品一区二区久久 | 亚洲理伦电影 | 久久精品久久精品 | 欧美一区二区三区视频 | 日本熟妇浓毛 | 国产精品成人久久久久久久 | 伊人久久久久久久久久久久 | 国产一区二区三区视频播放 | 久久久18| 欧美在线视频免费播放 | 亚洲乱码精品久久久久.. | 国产a毛片| 青娱乐欧美 | 日本在线一区二区三区 | 日本一级淫片免费放 | 日韩高清一级片 | 国产白丝喷水 | 国产综合视频一区二区 | 性生活三级视频 | 搡国产老太xxx网站 高h喷汁呻吟3p | 一本—道久久a久久精品蜜桃 | 国产精品免费网站 | 亚洲美女性生活 | 97在线观看免费视频 | 亚洲毛片一区二区 | 羞视频在线观看 | 97色在线视频 | 久久免费看毛片 | 亚洲宅男天堂 | 爱情岛论坛亚洲入口 | av在线资源网站 | 综合成人| 国产另类综合 | wwww在线观看 | aaa黄色一级片| 精品无码m3u8在线观看 | 日韩中文字幕综合 | 亚洲国产123| 国内偷拍av | 国产51页| 久久视频在线免费观看 | 国产日韩精品一区二区三区 | 久久久久久欧美精品se一二三四 | 蜜臀久久99精品久久久 | 特黄特色大片免费视频大全 | 国产中文字幕二区 | 69av视频| 日本在线中文字幕专区 | aⅴ天堂网 | 午夜电影一区二区三区 | 中文字幕人妻色偷偷久久 | 亚洲狠狠 | 性色视频在线 | 欧美人在线 | 我和岳m愉情xxxⅹ视频 | 中文视频一区二区 | 69xx国产 | 国产视频成人 | 亚洲性猛交 | 国产成人激情视频 | 爱爱亚洲 | 日本一级吃奶淫片免费 | 免费成人av在线播放 | 欧美处女 | 91看片就是不一样 | 欧美成人xxx | wwwav视频 |