• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    數據庫查詢優化原則

    發布: 2011-2-21 09:26 | 作者: 不祥 | 來源: 領測軟件測試網采編 | 查看: 106次 | 進入軟件測試論壇討論

    領測軟件測試網

      數據庫查詢優化原則  軟件測試

      1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

      2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:

      select id from t where num is null

      可以在num上設置默認值0,確保表中num列沒有null值,然后這樣查詢:

      select id from t where num=0

      3.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。

      4.應盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:

      select id from t where num=10 or num=20

      可以這樣查詢:

      select id from t where num=10

      union all

      select id from t where num=20

      5.in 和 not in 也要慎用,否則會導致全表掃描,如:

      select id from t where num in(1,2,3)

      對于連續的數值,能用 between 就不要用 in 了:

      select id from t where num between 1 and 3

      6.下面的查詢也將導致全表掃描:

      select id from t where name like '%abc%'

      若要提高效率,可以考慮全文檢索。

      7.如果在 where 子句中使用參數,也會導致全表掃描。因為SQL只有在運行時才會解析局部變量,但優化程序不能將訪問計劃的選擇推遲到運行時;它必須在編譯時進行選擇。然而,如果在編譯時建立訪問計劃,變量的值還是未知的,因而無法作為索引選擇的輸入項。如下面語句將進行全表掃描:

      select id from t wherenum=@num

      可以改為強制查詢使用索引:

      select id from t with(index(索引名)) wherenum=@num

      8.應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描。如:

      select id from t where num/2=100

      應改為:

      select id from t where num=100*2

      9.應盡量避免在where子句中對字段進行函數操作,這將導致引擎放棄使用索引而進行全表掃描。如:

      select id from t where substring(name,1,3)='abc'--name以abc開頭的id

      select id from t where datediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 數據庫

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>