1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      SQL性能優(yōu)化提升的方法有哪些

      SQL性能優(yōu)化提升的方法有哪些?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

      我們提供的服務有:網(wǎng)站制作、網(wǎng)站設計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、政和ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的政和網(wǎng)站制作公司

      ? 簡單的性能優(yōu)化

      Sql的性能優(yōu)化是數(shù)據(jù)庫工程師在實際工作中必須面對的重要課題之一。對于某些數(shù)據(jù)庫工程師來說,它幾乎唯一的命題。實際上,像WEB服務這樣需要快速響應的應用場景中,SQL的性能直接決定了系統(tǒng)是否可以使用。這里主要介紹一些使用SQL執(zhí)行速度更快,消耗內(nèi)存更少的優(yōu)化技巧,今天的文章只介紹其中的一種,后續(xù)會繼續(xù)更新一些其它的優(yōu)化方式。

      嚴格地優(yōu)化查詢性能時,必須要了解所使用的數(shù)據(jù)庫的功能特點。此外,查詢速度慢并不只是因為SQL語句本身,還可能是因為內(nèi)存分配不佳,文件結構不合理等其他原因。因此這里介紹的優(yōu)化SQL的方法未必能解決所有的性能問題,但是確實很多時候的查詢性能不好的原因還是SQL的寫法不合理。

      ? 使用高效的查詢

      在SQL中,很多時候不同代碼能夠得到相同的結果。從理論上來說,得到相同結果的不同代碼應該有相同的性能,但遺憾的是,查詢優(yōu)化器生成的執(zhí)行計劃很大程度要受到代碼外部結構的影響。因此如果想優(yōu)化查詢性能,必須知道如何寫代碼才能使優(yōu)化器的執(zhí)行效率更高。

      參數(shù)是子查詢時,使用EXISTS代替IN

      IN謂詞非常方便,而且代碼容易理解,所以使用的頻率很高。但是方便的同時,IN謂詞卻有成為性能優(yōu)化的瓶頸的危險。如果代碼中大量用到IN謂詞,那么一般只對它們進行優(yōu)化就能大幅度地提升性能。

      如果IN的參數(shù)是“1,2,3”這樣的數(shù)值列表,一般還不需要特別注意。但是如果參數(shù)是子查詢,那么就需要注意了。

      大多數(shù)情況,[NOT]IN和[NOT]EXISTS返回的結果是相同的。但是兩者用于子查詢時,EXISTS的速度會更快一些。

      下面來看個例子:

      SQL性能優(yōu)化提升的方法有哪些SQL性能優(yōu)化提升的方法有哪些

      我們試著從Class_A表中查出同時存在于Class_B表中的員工。下面兩條SQL語句返回的結果是一樣的,但是使用EXISTS的SQL語句更快一些。

      SQL性能優(yōu)化提升的方法有哪些

      SQL性能優(yōu)化提升的方法有哪些

      兩個結果都如下所示:

      SQL性能優(yōu)化提升的方法有哪些

      使用EXISTS時更快的原因有以下兩個。

      a) 如果連接列(id)上建立了索引,那么查詢Class_B時不用查詢實際的表,只需查索引就可以了。

      b) 如果使用EXISTS,那么只要查到一行數(shù)據(jù)滿足條件就會終止查詢,不用像使用IN時一樣掃描全表。在這一點上NOT EXISTS也一樣。

      當IN的參數(shù)是子查詢時,數(shù)據(jù)庫首先會執(zhí)行子查詢,然后將結果存儲在一張臨時的工作表里(內(nèi)聯(lián)視圖),然后掃描整個視圖。很多情況下這種做法都非常耗費資源。使用EXISTS的話,數(shù)據(jù)庫不會生成臨時的工作表。

      但是從代碼的可讀性上來看,IN要比EXISTS好。使用IN時的代碼看起來更一目了然,易于理解。因此,如果確信使用IN也能快速獲取結果,就沒有必要非得改成EXISTS了。

      而且,最近有很多數(shù)據(jù)庫也嘗試著改善了IN的性能。也許未來的某一天,無論哪個數(shù)據(jù)庫上,IN都能具體和EXISTS一樣的性能。

      參數(shù)是子查詢時,使用連接代替IN

      要想改善IN的性能,除了使用EXISTS,還可以使用連接。前面的查詢語句就可以像下面這樣“扁平化”。

      SQL性能優(yōu)化提升的方法有哪些

      這種寫法至少能用到一張表的“id”列上的索引。而且,因為沒有了子查詢,所以數(shù)據(jù)庫也不會生成中間表。我們很難說與EXISTS相比哪個更好,但是如果沒有索引,那么與連接相比,可能EXISTS會略勝一籌。而且從很多查詢可以看出,有些情況下使用EXISTS比使用連接更合適。

      感謝各位的閱讀!看完上述內(nèi)容,你們對SQL性能優(yōu)化提升的方法有哪些大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關文章內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      名稱欄目:SQL性能優(yōu)化提升的方法有哪些
      文章源于:http://ef60e0e.cn/article/jdojch.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        昭觉县| 乌拉特后旗| 出国| 罗定市| 易门县| 汽车| 类乌齐县| 原阳县| 万盛区| 洪湖市| 肥城市| 山阴县| 封开县| 舒城县| 盘锦市| 保亭| 监利县| 绥德县| 佳木斯市| 肃宁县| 琼海市| 盐亭县| 巴马| 玉溪市| 伊宁县| 中江县| 云和县| 岑巩县| 恩平市| 永寿县| 阿合奇县| 皮山县| 和平县| 垫江县| 山阳县| 股票| 东乡族自治县| 潮安县| 连山| 乌审旗| 博客|