大數據量模糊查詢優化


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

  解決方法:修改查詢語句

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

  SQL Server數據庫查詢技巧二:

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

  解決方法:

  '//用空格分割查詢字符串 ck=split(abigale," ") '//得到分割后的數量 sck=UBound(ck) sql="select * ada where" 在一個字段中查詢 For i = 0 To sck SQL = SQL & tempJoinWord & "(" & _ "alice like '"&ck(i)&"%')" tempJoinWord = " and " Next 在二個字段中同時查詢 For i = 0 To sck SQL = SQL & tempJoinWord & "(" & _ "alice like '"&ck(i)&"%' or " & _ "alice1 like '"&ck(i)&"%')" tempJoinabigale = " and " 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,默認為聚集索引,不建立其它非聚集索引

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

  從字段Title和Author中模糊檢索,按Id排序

  查詢時間:50秒

  方案2:

  主鍵Id,默認為聚集索引

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

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

  從字段Title和Author中模糊檢索,按Id排序

  查詢時間:2 - 2.5秒

  方案3:

  主鍵Id,默認為聚集索引

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

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

  從字段Title和Author中模糊檢索,按Star排序

  查詢時間:2 秒

  方案4:

  主鍵Id,默認為聚集索引

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

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

  方案5:

  主鍵Id,默認為聚集索引

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

  select * from News where Title like '"&abigale&"%' 或 select * from News where Author like '"&abigale&"%'

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

原文:https://blog.csdn.net/jason_ldh/article/details/19418359 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM