<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • SQL語句優(yōu)化方法詳細(xì)介紹

    時(shí)間:2024-08-30 21:43:22 SQL 我要投稿
    • 相關(guān)推薦

    SQL語句優(yōu)化方法詳細(xì)介紹

      1. 選擇最有效率的表名順序, FROM子句中寫在最后的表(基礎(chǔ)表 driving table)將被最先處理,在FROM子句中包含多個(gè)表的情況下,你必須選擇記錄條數(shù)最少的表作為基礎(chǔ)表.汗顏!!以前以為dimensional table,都是多條記錄呢,怪不得以前寫的查詢速度這么慢。

      2.Where子句中的連接順序.:

      數(shù)據(jù)庫采用自下而上的順序解析Where子句,根據(jù)這個(gè)原理,表之間的連接必須寫在其他Where條件之前, 那些可以過濾掉最大數(shù)量記錄的條件必須寫在Where子句的末尾.HAVING最后。這個(gè)貌似一直這么寫的,不過那是在SQLSERVER里面的,前面都是用的JOIN

      3.整合簡(jiǎn)單,無關(guān)聯(lián)的數(shù)據(jù)庫訪問:

      如果你有幾個(gè)簡(jiǎn)單的數(shù)據(jù)庫查詢語句,你可以把它們整合到一個(gè)查詢中(即使它們之間沒有關(guān)系),這個(gè)我沒有體會(huì),貌似都是按照業(yè)務(wù)邏輯把它們分成了一小塊一小塊的呢

      4.盡量縮小子查詢的結(jié)果。

      5.用EXISTS替代IN、用NOT EXISTS替代NOT IN。貌似我做項(xiàng)目的時(shí)候只在少數(shù)基于條件的表連接才會(huì)用EXISTS,基本不用IN 和NOT IN。

      6.避免在索引列上使用計(jì)算.

      Where子句中,如果索引列是函數(shù)的一部分.優(yōu)化器將不使用索引而使用全表掃描. 7,用>=替代> 這個(gè)我也不是特別明白,>是IS NOT?

      8,用UNION替換OR (適用于索引列)

      通常情況下, 用UNION替換Where子句中的OR將會(huì)起到較好的效果. 對(duì)索引列使用OR將造成全表掃描. 注意, 以上規(guī)則只針對(duì)多個(gè)索引列有效. 如果有column沒有被索引, 查詢效率可能會(huì)因?yàn)槟銢]有選擇OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.這個(gè)在項(xiàng)目中我是有遇到過的,我寫了個(gè)臨時(shí)表的函數(shù),其他的SQL需要和臨時(shí)表連接起來,因?yàn)闃I(yè)務(wù)邏輯比較復(fù)雜,連接的時(shí)候速度很慢,后來把OR都改成了UNION ALL

      9,避免在索引列上使用IS NULL和IS NOT NULL

      10,避免改變索引列的類型

      11. 需要當(dāng)心的Where子句:

      某些Select 語句中的Where子句不使用索引. 這里有一些例子.

      在下面的例子里, (1)‘!=' 將不使用索引. 記住, 索引只能告訴你什么存在于表中, 而不能告訴你什么不存在于表中. (2) ‘||'是字符連接函數(shù). 就象其他函數(shù)那樣, 停用了索引.

      (3) ‘+'是數(shù)學(xué)函數(shù). 就象其他數(shù)學(xué)函數(shù)那樣, 停用了索引. (4)相同的索引列不能互相比較,這將會(huì)啟用全表掃描.

      12. 優(yōu)化GROUP BY:提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉.

      13. 避免使用耗費(fèi)資源的操作:

      帶有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL語句會(huì)啟動(dòng)SQL引擎

      執(zhí) 行耗費(fèi)資源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要執(zhí)行兩次排序. 通常, 帶有UNION, MINUS , INTERSECT的SQL語句都可以用其他方式重寫. 如果你的數(shù)據(jù)庫的SORT_AREA_SIZE調(diào)配得好, 使用UNION , MINUS, INTERSECT也是可以考慮的, 畢竟它們的可讀性很強(qiáng)

      .IN SSMS,If you want to see how much cpu time did one query consumed,you can use the following flow:

      SET STATISTICS IO ON

      set statistics time on

      execute your query

      set statistics time off

      and after this you have to look messages window not results window

    【SQL語句優(yōu)化方法詳細(xì)介紹】相關(guān)文章:

    SQL優(yōu)化大全09-09

    oracle的sql語句01-21

    SQL查詢語句大全10-24

    SQL語句的理解原則10-05

    mysql SQL語句積累參考10-02

    sql語句的各種模糊查詢08-25

    2016最新J2EE中SQL語句自動(dòng)構(gòu)造方法08-02

    詳細(xì)介紹totolin路由器的設(shè)置方法10-19

    用SQLSERVER查詢正在實(shí)行的SQL的方法08-31

    Sql Server、Access數(shù)據(jù)排名的實(shí)現(xiàn)方法07-09

    主站蜘蛛池模板: 精品国产福利一区二区| 日韩一级精品视频在线观看| 国产69精品久久久久777| 久久久精品无码专区不卡| 2022国产精品不卡a| 亚洲日韩国产AV无码无码精品 | 国内精品免费在线观看| 无码国产乱人伦偷精品视频| 久久久亚洲精品蜜桃臀| 国产精品麻豆入口| 四虎成人欧美精品在永久在线| 精品麻豆丝袜高跟鞋AV| 日韩国产精品无码一区二区三区| 亚洲国产精品无码久久久久久曰| 欧美日韩国产成人高清视频,欧美日韩在线精品一 | 久久久精品2019免费观看| 欧洲精品一区二区三区在线观看| 国产精品无码久久久久| 中文精品一卡2卡3卡4卡| 女人香蕉久久**毛片精品| 99re国产精品视频首页| 久久夜色精品国产噜噜麻豆| 青青青国产精品一区二区| 亚洲av无码乱码国产精品fc2| 最新在线精品国自av| 手机日韩精品视频在线看网站| 精品国产91久久久久久久a| 国产A√精品区二区三区四区| 国产国产精品人在线视| 国产精品无圣光一区二区| 精品伦精品一区二区三区视频| 日韩精品在线观看视频| 亚洲综合一区二区国产精品| 亚洲精品高清久久| 国产精品无码免费专区午夜| 国产精品小视频免费无限app| 国产色婷婷精品综合在线| 亚洲中文精品久久久久久不卡 | 欧美日韩国产精品| 精品无码国产污污污免费网站国产 | 中文字幕av日韩精品一区二区|