<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • SQL語句的優(yōu)化問題教程

    時(shí)間:2024-10-03 00:19:15 SQL 我要投稿
    • 相關(guān)推薦

    SQL語句的優(yōu)化問題教程

      在實(shí)際的工作中,尤其是在生產(chǎn)環(huán)境里邊,SQL語句的優(yōu)化問題十分的重要,它對數(shù)據(jù)庫的性能的提升也起著顯著的作用.我們總是在抱怨機(jī)器的性能問題,總是在抱怨并發(fā)訪問所帶來的瑣問題,但是如果我們對沒一條SQL語句進(jìn)行優(yōu)化,盡管不能說可以解決全部問題,但是至少可以解決大部分問題.

      1.Top排序問題.

      我們經(jīng)常要對表某個(gè)字段進(jìn)行排序,然后取前N名.所以我們會(huì)寫如下的SQL語句:

      selecttop100*from表

      orderbyScoredesc

      如果表非常大的話,那么這樣的操作是非常消耗資源的,因?yàn)镾QLSERVER要對整個(gè)表進(jìn)行排序,然后取前N條記錄.這樣的造作是在Temdb里邊進(jìn)行的,所以極端的時(shí)候會(huì)報(bào)Log已滿這樣的錯(cuò)誤.為了避免進(jìn)行全表的排序,我們要做的僅僅是在Score上建立索引,這樣因?yàn)镾core索引的葉級是有序的,只要在Score所以的頁級取前100個(gè),然后根據(jù)書簽查找到實(shí)際的記錄,這樣對DB的性能就會(huì)有極大的提升.

      2.同一天問題.

      我們經(jīng)常要查找和一個(gè)日期同一天的記錄,所以我們回寫如下的SQL語句;

      declare@DateTimedatetime

      set@DateTime=getdate()

      select*from表

      whereconvert(10),F_Time,120)=convert(10),@DateTime,120)

      但是這樣寫的SQL語句帶來的問題就是不能使用F_Time上的索引了.為了近可能的使用F_Time上的索引,我們可以使用時(shí)間段查詢的方式來代替上邊的語句.

      declare@startdatetime

      declare@enddatetime

      declare@datetimedatetime

      set@datetime=getdate()

      tart=convert(10),@datetime,120)--一天的其始時(shí)間

      set@end=dateadd(ss,-1,dateadd(d,1,@start))--一天的結(jié)束時(shí)間

      select*from表whereF_Timebetween@startand@end

      這樣就解決了使用不上索引的問題.

      3.利用索引進(jìn)行分組操作.】我們經(jīng)常要對某一字段進(jìn)行分組,而對另外一些字段進(jìn)行聚合操作.如果我們對分組的字段合理的使用索引,可以加快我們分組的速度.下邊以Northwind的Orders表為例:

      --orders表的EmployeeID上建有索引.

      selectEmployeeID,count(*)

      fromorders

      groupbyEmployeeID

      --查看執(zhí)行計(jì)劃,此查詢利用了EmployeeID上的索引.如改成如下查詢:

      selectEmployeeID,sum(Freight)

      fromorders

      groupbyEmployeeID

      --查看執(zhí)行計(jì)劃,此查詢則沒有使用EmployeeID上的索引.而是使用了全表掃描.那么原因是什么呢?是因?yàn)镕reight沒有在EmployeeID的索引上,所以通過索引不能得到結(jié)果.而如果通過書簽查詢的成本太高,所以SQLSERVER選擇了使用全表掃描.而如果我們執(zhí)行在EmployeeID和Freight上建立復(fù)合索引呢?

      createindexidx_EmployeeIDonorders(EmployeeID,Freight)

      --再次執(zhí)行第二個(gè)查詢.查看執(zhí)行計(jì)劃.SQLSERVER使用的我們建立的索引.只需要使用索引就可以查詢到結(jié)果,極大的提高了我們的查詢速度.

    【SQL語句的優(yōu)化問題教程】相關(guān)文章:

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

    oracle的sql語句01-21

    關(guān)于sql多條件多字段排序的教程10-23

    SQL查詢語句大全10-24

    SQL語句的理解原則10-05

    mysql SQL語句積累參考10-02

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

    Oracle的sql語句模擬試題及答案10-12

    SQL語句中的正則表達(dá)示07-28

    關(guān)于硬盤的維護(hù)與優(yōu)化問題02-20

    主站蜘蛛池模板: 精品无码一区二区三区爱欲九九| 国产精品久久久久天天影视| 麻豆成人久久精品二区三区免费| 国产精品视频全国免费观看| 精品国产午夜理论片不卡| 久久er国产精品免费观看8| 亚洲天堂久久精品| 国产成人精品久久一区二区三区 | 国产亚洲精品一品区99热| 亚洲精品自在在线观看| 久久精品国产一区二区三区| 91精品国产91热久久久久福利| 国产精品亚洲A∨天堂不卡| 呦交小u女国产精品视频| 国内精品久久久久久久coent| 青草青草久热精品视频在线网站| 国产精品福利自产拍在线观看 | 亚洲国产小视频精品久久久三级| 8050免费午夜一级国产精品| 99久久精品国产高清一区二区| 日产欧美国产日韩精品| 亚洲精品成人片在线观看精品字幕| 欧洲精品一区二区三区在线观看| 国产精品户外野外| 办公室久久精品| 2020最新久久久视精品爱| 久久精品国产久精国产| 国产精品网站在线观看| 99久久99这里只有免费的精品| 成人区精品一区二区不卡| 精品不卡一区二区| 精品卡一卡二卡乱码高清| 精品无码国产一区二区三区51安| 无码日韩精品一区二区免费暖暖 | 国产一精品一av一免费爽爽| 国产精品扒开腿做爽爽爽视频| 欧美jizzhd精品欧美| 精品偷自拍另类在线观看| 国产精品免费观看调教网| 国产国拍亚洲精品mv在线观看| 国产亚洲精品精华液|