我与乡下少妇的性事_色琪琪综合男人的天堂aⅴ视频_大胸喂奶秘书3p高h_国产一区二区视频在线播放_国产老头gay和老头gay视频_中文字幕亚洲欧美_国产男人搡女人免费视频_伊人色综合久久天天五月婷_崔雪莉被金秀贤握胸动态图_毛片在线视频观看

SQL查詢語句的優(yōu)化 SQL查詢語句的優(yōu)化

SQL查詢語句的優(yōu)化

  • 期刊名字:新鄉(xiāng)教育學(xué)院學(xué)報
  • 文件大小:302kb
  • 論文作者:茹蓓
  • 作者單位:華中科技大學(xué)
  • 更新時間:2020-09-29
  • 下載次數(shù):
論文簡介

第19卷。第4期新鄉(xiāng)教育學(xué)院學(xué)報Vol. 19,No.42006年12月JOURNAL OF XINXIANG EDUCATTON COLLECESQL查詢語句的優(yōu)化茹蓓(華中科技大學(xué)控制科學(xué)與工程系,湖北武漢430079)摘要:目前數(shù)據(jù)庫 面臨的主要問題是SQL查詢語句的優(yōu)化,通過使用索引、提供冗余搜索參數(shù)避免相關(guān)子查詢等方法,可以有效的提高系統(tǒng)性能。關(guān)鍵詞:數(shù)據(jù)庫;SQL;查詢語句;優(yōu)化方法中圖分類號:TP311文獻標識碼:A文章編號16723520040085-02越來越多的軟件開發(fā)是基于數(shù)據(jù)庫進行的,而數(shù)據(jù)庫中詢語句中索引項sno、cno沒有包含WHERE子句中的grade主要是使用SQL查詢語句來獲得信息。隨著數(shù)據(jù)庫中數(shù)據(jù)項 ,那么就不會利用索引項來提高查詢速度。可以通過在的增加,查詢語句的優(yōu)化就成為系統(tǒng)需要解決的最重要的問WHERE子句后增加' Sno IS NOT NULL'這樣的永真條件把索題?,F(xiàn)在很多用戶使用SQL Sever的查詢優(yōu)化器來改進系統(tǒng)引項引人查詢中,形成索引覆蓋,提高執(zhí)行速度。性能,”但是使用查詢優(yōu)化器并不能智能化的自動編寫SE-(二)提供-些冗余的搜索參數(shù)LECT語句,那么編寫查詢語句的任務(wù)還是要由編程人員來-般支持SQL語言的大型關(guān)系數(shù)據(jù)庫都需要使用一個完成。在相同的查詢條件下,可以有多種不同的表示方式,基于成本的優(yōu)化器,為即時查詢提供- -個最佳的執(zhí)行策略。而在數(shù)據(jù)庫中不同表達方式運行的速度是截然不同,劣質(zhì)的優(yōu)化器通過查詢語句提供執(zhí)行策略,采用查詢策略可使系統(tǒng)查詢語句與優(yōu)化的查詢語句之間的速度差別甚至可以達到性能大大提高。幾十倍,所以編寫SELECT語句的優(yōu)劣會直接影響系統(tǒng)的性在多個表連接查詢時,應(yīng)當提供-些冗余的搜索參 數(shù),能。設(shè)計人員可以通過多種方法來優(yōu)化編寫SELECT查詢語使優(yōu)化器有更多 的選擇余地。句,從而提高查詢速度。例如, 0] SELECT student. sudent. name, student. course.-優(yōu)化方法course . id, student_ course. grade FROM student, student _ course(一)合理設(shè)計并使用索引WHERE student. student. id= ‘g9940202' AND student. student_建立索引是加快表的查詢速度的有效手段?!?用戶可以id= student - course. student - id; SELECT student. student - name,根據(jù)情況創(chuàng)建聚集索引和組合索引。student_ course. course _ id, stodent . course. grade FROM student,聚集索引是指索引項的順序與表中記錄的物理順序一student_ counse WHERE student. student _ id =‘e9940202' AND致的索引組織。因此,在聚集索引下進行范圍查找時,根據(jù)student. student _ id = stadent - course. student _ id AND student_條件很容易就確定查找范圍的起止點,然后只在確定的范圈course. student_ id= ‘g9940202' ;前面這兩個查詢語句作用是內(nèi)掃描數(shù)據(jù)頁就可以完成查詢要求,避免了每次查詢都必須相同的,但是后一個提供了更大的靈活性,便于查詢。掃描表中所有的數(shù)據(jù)頁,從而縮短了查詢時間。但是并不是(三)避免使用相關(guān)子查詢所有的表都適用聚簇索引,通常在下面幾種情況下建立聚簇相關(guān)子查詢是指子查詢的查詢條件依賴于外層父查詢索引:表中列數(shù)據(jù)相對穩(wěn)定、變化不頻繁;使用BEIWEEN、的某個屬性值。相關(guān)子查詢的內(nèi)層查詢與外層查詢有關(guān),所<.< =.>i.> =謂詞進行范圍值的查詢;頻繁使用連接或以必須反復(fù)執(zhí)行,對于外層查詢的每-個元組都要進行一遍CROUP BY子句的查詢列。內(nèi)層查詢的運算并且很可能當父查詢的列值改變之后,子在多個列進行查詢時,使用組合索引可以在表中確定數(shù)查詢要重新查詢一次。這樣會導(dǎo)致大量的隨機磁盤U0操據(jù)排序,減少數(shù)據(jù)查詢的時間,提高查詢效率。但是使用組作,使相關(guān)查詢的效率較低,而且嵌套層次越多,效率越低。合索引時要注意必須將索引項覆蓋查詢。通常可以使用連接查詢替代相關(guān)子查詢;如果子查詢不可避例如,在emo, cno項上建立唯-索引, SELECT CouNT免,那么要在子有詢中過濾掉盡可能多的記錄行。(*) FROM SC WHERE grade> 60 AND grade< 90 ;在這個查中國煤化工HERE EXIST(SELECTYHCNMHG收稿日期:006-05-22作者簡介:茹蓓(1977-) ,女,河南新鄉(xiāng)人,華中科技大學(xué)系統(tǒng)工程專業(yè)2006 級在讀碩士研究生,平原大學(xué)信息工程學(xué)院講師。研究方向:軟件設(shè)計。8:新鄉(xiāng)教育學(xué)院學(xué)報2006年* FROM SC WHERE student. smo= SC. smo);可以改為連接查60;這樣,查詢可以正常進行優(yōu)化。詢SELECT sname FROM student, SC WHERE sudent. sno= SC.(七)避免通配符“%”或“-"在LIKE謂詞匹配串的首位sno;這樣,可以省去掃描很多數(shù)據(jù)記錄行。出現(xiàn)(四)避免使用不兼容的數(shù)據(jù)類型通配符“%”或"."出現(xiàn)在查詢的匹配串首位時,系統(tǒng)不在查詢語句的WHERE子句中出現(xiàn)的float.int.char和使用索引,這樣就會降低sQL語句的執(zhí)行速度。但是,當通varchar 型是不兼容的,數(shù)據(jù)類型的不兼容可能使優(yōu)化器無法配符出 現(xiàn)在匹配串的其他位置時,優(yōu)化器就可以利用索引提執(zhí)行一些本來可以進行的優(yōu)化操作。商執(zhí)行速度。例如, SELECT sno, sname FROM student WHERE sage> 18;例如, SELECT sname FROM student WHERE sname LIKE在student表中, sage字段是字符型,而18是整型數(shù),優(yōu)化器‘%洋 ';的執(zhí)行速度就不如SELECT sname FROM student無法對其進行優(yōu)化,DBMS要先將18轉(zhuǎn)化為字符型后才能與WHERE sname LIKE‘劉%洋’;的執(zhí)行速度。sage字段比較。編程時,應(yīng)將18轉(zhuǎn)化成字符型的表示,即.(八)避免順序存取“SELECT sno, sname FROM student WHERE sage>‘18'"。在嵌套查詢中,對表的順序存取對查詢效率可能產(chǎn)生致(五)避免使用“<>”或“! =”或“NOrT這樣的運算符命的影響。(I可以對連接的列進行索引,還可以使用并集“< >”是排斥性的操作符,不是包括性的操作符(1) ,這(UNON)來避免順序存取。會使系統(tǒng)只能直接搜索表中數(shù)據(jù),無法使用索引來確定將要例如,SELECT sno, sname FROM student WHERE (sage> 19命中的行數(shù),從而降低操作速度。AND sdept= 'IS') OR sdep=‘CS' ;雖然有列的索引,但是系統(tǒng)例如, SELECT smo FROM student WHERE sage< > '20';還是順序掃描整個表,所以要改進查詢速度就要分離行的集SELECT smo FROM student WHERE sage! = '20' ;這兩個查詢合,使用UNION。我們可以將上句改為:“SELECT sno, sname執(zhí)行時,不能使用索引,可以將上兩句改為SELECT sno FROMFROM student WHERE (sage> 19 AND sdept= 'IS') UNION SE-student WHERE soge< °20' OR sage> *20' ;這樣查詢執(zhí)行時,LECT sno,snamne FROM student WHERE sdept=‘CS'"。就可以利用索引縮小范圍,提高速度。二、結(jié)束語與“<>"、“! ="類似,"“NOT* 謂詞是查詢中的否定形SQL查詢語句的優(yōu)化是在保證查詢結(jié)果正確的前提下,式,“NOT"使用時,對應(yīng)要否定的內(nèi)容用括號括起來,NOT謂通過使用優(yōu)化器、充分利用索引、減少表的掃描UO次數(shù)、減詞放在括號的前面,在查詢時先運算括號中的內(nèi)容,然后運少數(shù)據(jù)轉(zhuǎn)換的進行、減少傳送數(shù)據(jù)量等方法提高系統(tǒng)性能。行外面的NOT運算。那么這種運算也不能完成優(yōu)化的任務(wù),所以在編程時盡量避免使用“NOT”操作符。參考文獻:(六)避免在WHERE子句的條件參數(shù)中使用函數(shù)或數(shù)學(xué)運算符[1]微軟公司.數(shù)據(jù)庫程序設(shè)計[M].北京:高等教育出版社,WHERE子句中的條件表達式是為查詢提供判斷依據(jù)2004:485.的。如果條件表達式包含了字符串函數(shù)或數(shù)學(xué)操作符,那么[2]王 珊,陳紅.數(shù)據(jù)庫系統(tǒng)原理教程[ M].北京:清華大優(yōu)化器就不能使用分布系統(tǒng)統(tǒng)計信息,這樣也會影響查詢速學(xué)出版社,2002:71.度。[3]朱如龍sQL Server 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)技術(shù)[M].北京:例如,①SELECT smo FROM student WHERE SUB2STRING機械工業(yè)出版社,2004:141.(snane,1,1)=‘劉' ;②SELECT sno FROM SC WHERE gade/10[4]高天迎. SQL語句的優(yōu)化[J].天津理工學(xué)院學(xué)報,2003,> 6;這兩個查詢語句都不能進行優(yōu)化,可以在相同查詢要求(3).下將這兩個語句改為:①ELECT smo FROM student WHEREsname LIKE劉% ' ;②SELECT sno FROM SC WHERE grade >[責任編校郭濤]Optimization Methods of SQL Query LanguageRU Bei(Huazhong University of Science and Technology , Wuhan 430079 ,China)Abstract:At the present time ,SQL optimization is the mai中國煤化rticle itoduee eandanalyses some methods to optimize the SQL, which include propeFlata, avoiding fomaltranformation, etc. These methods can improve the eficiency of sTYHCNMHGKey words: database; SQL; query language; optimization methods防數(shù)據(jù)

論文截圖
版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時內(nèi)刪除。