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

正文內(nèi)容

數(shù)據(jù)庫(kù)的性能優(yōu)化項(xiàng)目解決方案(編輯修改稿)

2025-06-06 06:26 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 處就是能夠根據(jù)查詢要求,迅速縮小查詢范圍,避免全表掃描。在實(shí)際應(yīng)用中,因?yàn)镮D號(hào)是自動(dòng)生成的,我們并不知道每條記錄的ID號(hào),所以我們很難在實(shí)踐中用ID號(hào)來進(jìn)行查詢。這就使讓ID號(hào)這個(gè)主鍵作為聚集索引成為一種資源浪費(fèi)。其次,讓每個(gè)ID號(hào)都不同的字段作為聚集索引也不符合“大數(shù)目的不同值情況下不應(yīng)建立聚合索引”規(guī)則;當(dāng)然,這種情況只是針對(duì)用戶經(jīng)常修改記錄內(nèi)容,特別是索引項(xiàng)的時(shí)候會(huì)負(fù)作用,但對(duì)于查詢速度并沒有影響。 如果您的聚集索引盲目地建在ID這個(gè)主鍵上時(shí),查詢速度不一定會(huì)提高的,即使你在其他字段上建立非聚集索引。下面我們就來看一下在200萬(wàn)條數(shù)據(jù)量的情況下各種查詢的速度表現(xiàn):(1)全表掃描 只在主鍵上建立聚集索引:216。Select id,name,dept,emdate from person用時(shí):20546毫秒(即:21秒) 不在主鍵上建立聚集索引,只建普通索引216。Select id,name,dept,emdate from person用時(shí):17923毫秒(即:18秒)以上查詢執(zhí)行的實(shí)際上索引不會(huì)發(fā)揮作用,因?yàn)樘崛〉氖侨繑?shù)據(jù)。聚集索引在這里會(huì)耗費(fèi)更多的資源,所以會(huì)看到,不建立聚集索引比建立聚集索引還要快(2):按日期進(jìn)行過濾(用到索引) 在主鍵上建立聚集索引,在emdate上建立非聚集索引:216。select id,name,dept,emdate from person where emdatedateadd(day,+1,getdate())用時(shí):12376毫秒(12秒) 在主鍵上建立聚集索引,在emdate上沒有索引:216。select id,name,dept,emdate from person where emdatedateadd(day,+1,getdate())用時(shí):21296毫秒(21秒) 在主鍵上建立非聚集索引,在emdate上建立非聚集索引:216。select id,name,dept,emdate from person where emdatedateadd(day,+1,getdate())用時(shí):11590毫秒(12秒) 在主鍵上建立非聚集索引,在emdate上建立聚集索引:216。select id,name,dept,emdate from person where emdatedateadd(day,+1,getdate())andemdatedateadd(day,+3,getdate())用時(shí):5233毫秒(5秒)雖然每條語(yǔ)句提取出來的都是30萬(wàn)條數(shù)據(jù),各種情況的差異卻是比較大的,特別是將聚集索引建立在日期列時(shí)的差異。事實(shí)上,如果您的數(shù)據(jù)庫(kù)真的有幾千萬(wàn)條記錄的話,差距會(huì)更明顯。2:只要建立索引就能顯著提高查詢速度 這個(gè)想法是錯(cuò)誤的。事實(shí)上,我們可以發(fā)現(xiàn)上面的例子中,上面按日期過濾的語(yǔ)句完全相同,且建立索引的字段也相同,但查詢速度卻有著非常大的差別。所以,并非是在任何字段上簡(jiǎn)單地建立索引就能提高查詢速度。索引的建立,會(huì)帶來更多的系統(tǒng)開銷,因?yàn)橄到y(tǒng)要耗費(fèi)資源去維護(hù)它 ,如果建立了沒有用到的索引,不適當(dāng)?shù)乃饕?,過多的索引,反而會(huì)導(dǎo)致查詢性能下降。總之索引的建立,要看表的結(jié)構(gòu),數(shù)據(jù)的分布,還有你要用到哪些數(shù)據(jù),如果把索引建立在你根本不需要的數(shù)據(jù)列上,是根本不會(huì)發(fā)揮作用的。3:把所有需要提高查詢速度的字段都加進(jìn)聚集索引,以提高查詢速度 這個(gè)不一定正確。上面已經(jīng)談到。假設(shè)現(xiàn)在查詢要用到用戶名和日期這兩個(gè)字段,我們可以把他們合并起來,建立一個(gè)復(fù)合索引(pound index)。 很多人認(rèn)為只要把任何字段加進(jìn)聚集索引,就能提高查詢速度,也有人感到迷惑:如果把復(fù)合的聚集索引字段分開查詢,那么查詢速度會(huì)減慢嗎?帶著這個(gè)問題,我們來看一下以下的查詢速度(結(jié)果集都是25萬(wàn)條):(日期列emdate首先排在復(fù)合聚集索引的起始列,用戶名name排在后列) select id,name,dept,emdate from person where emdate216。39。2007060139。查詢速度:1664毫秒 select id,name,dept,emdate from person216。where emdate39。2007060139。 and name=’王小雪’查詢速度:1640毫秒 select gid,fariqi,neibuyonghu,title from person216。where name=39。王小雪39。查詢速度:5920毫秒從以上試驗(yàn)中,我們可以看到如果僅用聚集索引的起始列作為查詢條件和同時(shí)用到復(fù)合聚集索引的全部列的查詢速度是幾乎一樣的,而如果僅用復(fù)合聚集索引的非起始列作為查詢條件的話,這個(gè)索引是不起任何作用的。當(dāng)然,語(yǔ)句2的查詢速度一樣是因?yàn)椴樵兊臈l目數(shù)一樣,如果復(fù)合索引的所有列都用上,而且查詢結(jié)果少的話,這樣就會(huì)形成“索引覆蓋”,因而性能可以達(dá)到最優(yōu)。同時(shí),請(qǐng)記?。簾o論您是否經(jīng)常使用聚合索引的其他列,但其前導(dǎo)列一定要是使用最頻繁的列。 其他索引經(jīng)驗(yàn)總結(jié)1:用聚合索引比用不是聚合索引的主鍵速度快下面是實(shí)例語(yǔ)句:(都是提取25萬(wàn)條數(shù)據(jù))select id,name,dept,emdate from person where emdate=39。2007060439。使用時(shí)間:906毫秒select id,name,dept,emdate from person where id=100000使用時(shí)間:1153毫秒這里,用聚合索引比用不是聚合索引的主鍵速度略快一些。2:用聚合索引比用一般的主鍵作order by時(shí)速度快,特別是小數(shù)據(jù)量時(shí)select id,name,dept,emdate from person order by emdate用時(shí):17856 (約18秒)select id,name,dept,emdate from person order by id用時(shí):44046 (約45秒)這里可以看到,用聚集索引比用一般的主鍵作order by時(shí)。事實(shí)上,有的資料說小數(shù)據(jù)量情況下,用聚集索引排序列比非聚集索引作為排序列快,10萬(wàn)以上,則二者的速度差別不明顯。但據(jù)當(dāng)前200萬(wàn)條數(shù)據(jù)情況來看,在大數(shù)據(jù)量的情況下,這個(gè)結(jié)論依然成立。3:使用聚合索引內(nèi)的時(shí)間段,搜索時(shí)間會(huì)按數(shù)據(jù)占整個(gè)數(shù)據(jù)表的百分比比例減少,而無論聚合索引使用了多少個(gè)select id,name,dept,emdate from person whereemdate=39。20070604 00:00:39。用時(shí):1123毫秒(提取10萬(wàn)條)select id,name,dept,emdate from person whereemdate=39。20070604 00:00:39。用時(shí):1843毫秒(提取20萬(wàn)條)select id,name,dept,emdate from person whereemdate=39。20070609 00:00:39。用時(shí):4500毫秒(提取45萬(wàn)條)從以上統(tǒng)計(jì)的數(shù)據(jù)看來,這個(gè)規(guī)律基本上是正確的其他注意事項(xiàng) “水可載舟,亦可覆舟”,索引也一樣。索引有助于提高檢索性能,但過多或不當(dāng)?shù)乃饕矔?huì)導(dǎo)致系統(tǒng)低效。因?yàn)橛脩粼诒碇忻考舆M(jìn)一個(gè)索引,數(shù)據(jù)庫(kù)就要做更多的工作。過多的索引甚至?xí)?dǎo)致索引碎片。所以說,我們要建立一個(gè)“適當(dāng)”的索引體系,特別是對(duì)聚合索引的創(chuàng)建,更應(yīng)精益求精,以使您的數(shù)據(jù)庫(kù)能得到高性能的發(fā)揮。在實(shí)際的開發(fā)中,會(huì)遇到很多意想不到的情況,最好是多測(cè)試一些方案,找出哪種方案效率最高、最為有效。4:SQL語(yǔ)句改善 一個(gè)sql語(yǔ)句大約要經(jīng)過三個(gè)階段,編譯優(yōu)化,執(zhí)行,取值,而編譯階段,而第一階段大部分情況下都要花掉60%的時(shí)間,所以綁定變量是很重要的,sqlserver和oracle都有緩存區(qū),存放最近使用的sql語(yǔ)句,當(dāng)有一條sql語(yǔ)句到達(dá)數(shù)據(jù)庫(kù)服務(wù)器時(shí),數(shù)據(jù)庫(kù)會(huì)首先搜索緩存區(qū),看它是否存在可以重用的sql語(yǔ)句,如果存在,則無需編譯優(yōu)化,因?yàn)榫彺鎱^(qū)的sql語(yǔ)句都是編譯優(yōu)化好了的,可以直接執(zhí)行,節(jié)省相當(dāng)多的時(shí)間。如果沒有發(fā)現(xiàn)該語(yǔ)句,則必須要完全經(jīng)歷語(yǔ)句編譯分析,優(yōu)化計(jì)劃,安全檢查等過程,這不僅耗費(fèi)了大量的cpu功率,而且還在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)鎖住了一部分?jǐn)?shù)據(jù)庫(kù)緩存,這樣執(zhí)行sql語(yǔ)句的人越多,等待的時(shí)間越長(zhǎng),系統(tǒng)的性能會(huì)大幅度的下降。很多人不知道SQL語(yǔ)句在SQL SERVER中是如何執(zhí)行的,他們擔(dān)心自己所寫的SQL語(yǔ)句會(huì)被SQL SERVER誤解。比如:select id,name,dept,emdate from personwhere name=39。王小雪39。 and id100000 用時(shí):1220毫秒和執(zhí)行:select * from table1 where id 100000 and name=39。王小雪39。 用時(shí):1173毫秒一些人不知道以上兩條語(yǔ)句的執(zhí)行效率是否一樣,因?yàn)槿绻?jiǎn)單的從語(yǔ)句先后上看,這兩個(gè)語(yǔ)句的確是不一樣,如果id是一個(gè)聚合索引,那么后一句僅僅從表的10000
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1