SQL Server數據庫查詢優化的常用方法總結

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秒

SQL Server數據庫性能優化
  設計1個應用系統似乎並不難,但是要想使系統達到最優化的性能並不是一件容易的事。在開發工具、數據庫設計、應用程序的結構、查詢設計、接口選擇等方面有多種選擇,這取決于特定的應用需求以及開發隊伍的技能。本...查看完整版>>SQL Server數據庫性能優化
 
SQL Server數據庫連接查詢的種類及其應用
在數據庫開發方面,通過單表所表現的實現,有時候需要組合查詢來找到我們需要的記錄集,這時候我們就會用到連接查詢。 連接查詢主要包括以下幾個方面: 內連接 內連接一般是我們最常使用的,也叫自然連接,是用比較運...查看完整版>>SQL Server數據庫連接查詢的種類及其應用
 
查詢Sql server數據死鎖和阻塞的一個Store procedure...
SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO ALTER procedure sp_who_lockasbegindeclare @spid int,@bl int,@intTransactionCountOnEntry int, @intRowcount int, @intCountProperties int, ...查看完整版>>查詢Sql server數據死鎖和阻塞的一個Store procedure...
 
在數據表中用sql實現累計計算查詢(sql server 2000)
摘要:在數據表中用sql實現累計計算查詢(sql server 2000) 有這樣一個問題:如何按時間求累計值如下表所示 日期 數值 2005-5-1 2.4 2005-5-2 2 2005-5-3 5 2005-5-4 3.5要實現如下結果: 日期 數值 累計 2005-5-1...查看完整版>>在數據表中用sql實現累計計算查詢(sql server 2000)
 
SQL Server查詢數據庫中所有表信息
一條語句查詢數據庫中所有表的信息 SELECT 表名=case when a.colorder=1 then d.name else '' end, 表說明=case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序號=a.colorder, 字段名=a.name, 標識...查看完整版>>SQL Server查詢數據庫中所有表信息
 
在數據表中用sql實現累計計算查詢(sql server 2000)
有這樣一個問題:如何按時間求累計值如下表所示 日期 數值 2005-5-1 2.4 2005-5-2 2 2005-5-3 5 2005-5-4 3.5要實現如下結果: 日期 數值 累計 2005-5-1 2.4 2.4 2005-5-2 24.4 2005-5-3 5 9.4 2005-5-4 3.5 12....查看完整版>>在數據表中用sql實現累計計算查詢(sql server 2000)
 
SQL Server數據庫的查詢優化及分頁算法
  探討如何在有著1000萬條數據的MS SQL SERVER數據庫中實現快速的數據提取和數據分頁。以下代碼說明了我們實例中數據庫的“紅頭文件”一表的部分數據結構:CREATE TABLE . (  --TGongwen是紅頭文件表名 IDENTIT...查看完整版>>SQL Server數據庫的查詢優化及分頁算法
 
MS SQL Server查詢優化方法
●查詢速度慢的原因很多,常見如下幾種:1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷)2、I/O吞吐量小,形成了瓶頸效應。3、沒有創建計算列導致查詢不優化。4、內存不足5、網絡速度慢6、查...查看完整版>>MS SQL Server查詢優化方法
 
MS SQL Server查詢優化方法
●查詢速度慢的原因很多,常見如下幾種: 1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷) 2、I/O吞吐量小,形成了瓶頸效應。 3、沒有創建計算列導致查詢不優化。 4、內存不足 5、網絡速度慢...查看完整版>>MS SQL Server查詢優化方法
 
 
回到王朝網路首頁