SQL Server資料庫查詢優化的方法總結
本文中,abigale代表查詢字串,ada代表資料表名,alice代表欄位名。
技巧一:
問題型別:ACCESS資料庫欄位中含有日文片假名或其它不明字元時查詢會提示記憶體溢位。
解決方法:修改查詢語句
sql="select * from ada where alice like '%"&abigale&"%'"
改為
sql="select * from ada"
rs.filter = "alice like '%"&abigale&"%'"
技巧二:
問題型別:如何用簡易的辦法實現類似百度的多關鍵詞查詢(多關鍵詞用空格或其它符號間隔)。
解決方法:
'//用空格分割查詢字串
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
技巧三:提高查詢效率的幾種技巧
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資料庫)
以下是建立索引與不建立索引的一個查詢效率分析:
Sqlserver索引與查詢效率分析。
表 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秒
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-545150/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- SQL Server資料庫查詢速度慢原因及優化方法SQLServer資料庫優化
- 關於SQL Server資料查詢基本方法的總結SQLServer
- MS SQL Server查詢優化方法SQLServer優化
- MS SQL Server查詢優化方法SQLServer優化
- 50種方法最佳化SQL Server資料庫查詢SQLServer資料庫
- SQL Server 跨資料庫查詢SQLServer資料庫
- SQL Server 查詢優化功能SQLServer優化
- SQL查詢優化的方法SQL優化
- 五十種巧妙優化SQL Server資料庫的方法優化SQLServer資料庫
- 改進資料庫效能-SQL查詢優化資料庫SQL優化
- 資料庫查詢優化資料庫優化
- SQL Server查詢速度慢的原因及優化方法SQLServer優化
- SQL Server查詢速度慢原因及優化方法SQLServer優化
- 50種方法巧妙優化你的SQL Server資料庫優化SQLServer資料庫
- 資料庫SQL優化大總結之 百萬級資料庫優化方案資料庫SQL優化
- 資料庫SQL優化大總結之百萬級資料庫優化方案資料庫SQL優化
- Sql server2005 優化查詢速度50個方法小結SQLServer優化
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- SQL Server:基於WEB的資料庫查詢SQLServerWeb資料庫
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- 深入淺出的SQL server 查詢優化SQLServer優化
- 【資料庫】MySQL查詢優化資料庫MySql優化
- SQL SERVER 2012查詢資料庫和所有表的大小方法彙總SQLServer資料庫
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- Microsoft SQL Server查詢最佳化方法ROSSQLServer
- SQL查詢優化常見方法SQL優化
- 【資料庫】查詢優化之子連線優化資料庫優化
- MS SQL SERVER索引優化相關查詢SQLServer索引優化
- SQL Server 2008 查詢優化SQLServer優化
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- mysql查詢效能優化總結MySql優化
- SQL Server調優系列基礎篇(子查詢運算總結)SQLServer
- SQL Server之資料庫語句優化SQLServer資料庫優化
- SQL Server 之資料庫語句優化SQLServer資料庫優化
- SQL Server 查詢資料庫中所有表資料條數SQLServer資料庫
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- 優化SQL Server 2008的查詢效能優化SQLServer