最佳化SQL Server資料庫查詢技巧

來源:互聯網
上載者:User

SQL Server資料庫查詢技巧一:

問題類型:ACCESS資料庫欄位中含有日文片假名或其它不明字元時查詢會提示記憶體溢出。

解決方案:修改查詢語句

 
  1. sql="select * from ada where alice like '%"&abigale&"%'"
  2. 改為
  3. sql="select * from ada"
  4. rs.filter = "alice like '%"&abigale&"%'"

SQL Server資料庫查詢技巧二:

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

解決方案:

 
  1. '//用空格分割查詢字串
  2. ck=split(abigale," ")
  3. '//得到分割後的數量
  4. sck=UBound(ck)
  5. sql="select * ada where"
  6. 在一個欄位中查詢
  7. For i = 0 To sck
  8. SQL = SQL & tempJoinWord & "(" & _
  9. "alice like '"&ck(i)&"%')"
  10. tempJoinWord = " and "
  11. Next
  12. 在二個欄位中同時查詢
  13. For i = 0 To sck
  14. SQL = SQL & tempJoinWord & "(" & _
  15. "alice like '"&ck(i)&"%' or " & _
  16. "alice1 like '"&ck(i)&"%')"
  17. tempJoinabigale = " and "
  18. Next

SQL Server資料庫查詢技巧三:提高查詢效率的幾種技巧

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

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

3. alice like '%"&abigale&"%' 會使索引不起作用

like '"&abigale&"%' 會使索引起作用(去掉前面的%符號)

(指sqlserver資料庫)

4. '%"&abigale&"%' 與'"&abigale&"%' 在查詢時的區別:

比如你的欄位內容為:斯卡布羅集市

'%"&abigale&"%' :會通配所有字串,不論查“集市”還是查“斯卡”,都會顯示結果。

'"&abigale&"%' :只通配前面的字串,例如查“集市”是沒有結果的,只有查“斯卡”,才會顯示結果。

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

6. order by按叢集索引列排序效率最高。一個sqlserver資料表只能建立一個叢集索引,一般預設為ID,也可以改為其它的欄位。

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

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

SQL Server 索引與查詢效率分析。

表 News

欄位

Id:自動編號

Title:文章標題

Author:作者

Content:內容

Star:優先順序

Addtime:時間

記錄:100萬條

測試機器:P4 2.8/1G記憶體/IDE硬碟

 

方案1:

主鍵Id,預設為叢集索引,不建立其它非叢集索引

 
  1. select * from News where Title like '%"&abigale&"%'
  2. or Author like '%"&abigale&"%' order by Id desc

從欄位Title和Author中模糊檢索,按Id排序

查詢時間:50秒

方案2:

主鍵Id,預設為叢集索引

在Title、Author、Star上建立非叢集索引

 
  1. select * from News where Title like '"&abigale&"%'
  2. or Author like '"&abigale&"%' order by Id desc

從欄位Title和Author中模糊檢索,按Id排序

查詢時間:2 - 2.5秒

方案3:

主鍵Id,預設為叢集索引

在Title、Author、Star上建立非叢集索引

 
  1. select * from News where Title like '"&abigale&"%'
  2. or Author like '"&abigale&"%' order by Star desc

從欄位Title和Author中模糊檢索,按Star排序

查詢時間:2 秒

方案4:

主鍵Id,預設為叢集索引

 
  1. 在Title、Author、Star上建立非叢集索引
  2. select * from News where Title like '"&abigale&"%'
  3. or Author like '"&abigale&"%'

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

方案5

主鍵Id,預設為叢集索引

在Title、Author、Star上建立非叢集索引

 
  1. select * from News where Title like '"&abigale&"%'
  2. select * from News where Author like '"&abigale&"%'

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.