<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      幾個查詢優化小技巧,可以大大提高效率并處理一些問題

      [摘要]一個有效的優化與不優化或錯誤優化之間的差別,可能可以讓你的程序執行速度差別幾十倍甚至幾百倍。(本文不太適用于數據庫高手觀看,如有錯誤,歡迎不批評指正。)以下 word 代表查詢字符串,tablename代表數據表名,column代表字段名==============================...
      一個有效的優化與不優化或錯誤優化之間的差別,可能可以讓你的程序執行速度差別幾十倍甚至幾百倍。

      (本文不太適用于數據庫高手觀看,如有錯誤,歡迎不批評指正。)

      以下 word 代表查詢字符串,tablename代表數據表名,column代表字段名


      ===========================================================


      技巧一:

      問題類型:ACCESS數據庫字段中含有日文片假名或其它不明字符時查詢會提示內存溢出。

      解決方法:修改查詢語句

      sql="select * from tablename where column like '%"&word&"%'"
      改為
      sql="select * from tablename"
      rs.filter = " column like '%"&word&"%'"


      ===========================================================


      技巧二:

      問題類型:如何用簡易的辦法實現類似百度的多關鍵詞查詢(多關鍵詞用空格或其它符號間隔)。

      解決方法:

      '//用空格分割查詢字符串
      ck=split(word," ")
      '//得到分割后的數量
      sck=UBound(ck)

      sql="select * tablename where"

      在一個字段中查詢
      For i = 0 To sck
      SQL = SQL & tempJoinWord & "(" & _
      "column like '"&ck(i)&"%')"
      tempJoinWord = " and "
      Next

      在二個字段中同時查詢
      For i = 0 To sck
      SQL = SQL & tempJoinWord & "(" & _
      "column like '"&ck(i)&"%' or " & _
      "column1 like '"&ck(i)&"%')"
      tempJoinWord = " and "
      Next



      ===========================================================



      技巧三:大大提高查詢效率的幾種技巧

      1. 盡量不要使用 or,使用or會引起全表掃描,將大大降低查詢效率。

      2. 經過實踐驗證,charindex()并不比前面加%的like更能提高查詢效率,并且charindex()會使索引失去作用(指sqlserver數據庫)

      3.  column like '%"&word&"%' 會使索引不起作用
           column like '"&word&"%' 會使索引起作用(去掉前面的%符號)
           (指sqlserver數據庫)

      4. '%"&word&"%' 與'"&word&"%' 在查詢時的區別:
      比如你的字段內容為 一個容易受傷的女人
      '%"&word&"%' :會通配所有字符串,不論查“受傷”還是查“一個”,都會顯示結果。
      '"&word&"%' :只通配前面的字符串,例如查“受傷”是沒有結果的,只有查“一個”,才會顯示結果。

      5. 字段提取要按照“需多少、提多少”的原則,避免“select *”,盡量使用“select 字段1,字段2,字段3........”。實踐證明:每少提取一個字段,數據的提取速度就會有相應的提升。提升的速度還要看您舍棄的字段的大小來判斷。

      6. order by按聚集索引列排序效率最高。一個sqlserver數據表只能建立一個聚集索引,一般默認為ID,也可以改為其它的字段。

      7. 為你的表建立適當的索引,建立索引可以使你的查詢速度提高幾十幾百倍。(指sqlserver數據庫)



      ===========================================================



      以下是建立索引與不建立索引的一個查詢效率分析:

      Sqlserver索引與查詢效率分析。

      表 News

      字段
      Id:自動編號
      Title:文章標題
      Author:作者
      Content:內容
      Star:優先級
      Addtime:時間

      記錄:100萬條
      測試機器:P4 2.8/1G內存/IDE硬盤

      =======================================================

      方案1:
      主鍵Id,默認為聚集索引,不建立其它非聚集索引
      select * from News where Title like '%"&word&"%' or Author like '%"&word&"%' order by Id desc

      從字段Title和Author中模糊檢索,按Id排序
      查詢時間:50秒

      =======================================================

      方案2:
      主鍵Id,默認為聚集索引
      在Title、Author、Star上建立非聚集索引
      select * from News where Title like '"&word&"%' or Author like '"&word&"%' order by Id desc

      從字段Title和Author中模糊檢索,按Id排序
      查詢時間:2 - 2.5秒

      =======================================================

      方案3:
      主鍵Id,默認為聚集索引
      在Title、Author、Star上建立非聚集索引
      select * from News where Title like '"&word&"%' or Author like '"&word&"%' order by Star desc

      從字段Title和Author中模糊檢索,按Star排序
      查詢時間:2 秒

      =======================================================

      方案4:
      主鍵Id,默認為聚集索引
      在Title、Author、Star上建立非聚集索引
      select * from News where Title like '"&word&"%' or Author like '"&word&"%'

      從字段Title和Author中模糊檢索,不排序
      查詢時間:1.8 - 2 秒


      =======================================================

      方案5:
      主鍵Id,默認為聚集索引
      在Title、Author、Star上建立非聚集索引
      select * from News where Title like '"&word&"%'

      select * from News where Author like '"&word&"%'

      從字段Title 或 Author中檢索,不排序
      查詢時間:1秒



      日韩精品一区二区三区高清