SQL Server資料庫查詢優化技巧

2021-04-23 15:19:05 字數 2841 閱讀 8521

文中,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排序

方案2:

主鍵id,預設為聚集索引

在title、author、star上建立非聚集索引

select * from news where title like '"&abigale&"%'

or author like '"&abigale&"%' order by id desc

從欄位title和author中模糊檢索,按id排序

方案3:

主鍵id,預設為聚集索引

在title、author、star上建立非聚集索引

select * from news where title like '"&abigale&"%'

or author like '"&abigale&"%' order by star desc

從欄位title和author中模糊檢索,按star排序

方案4:

主鍵id,預設為聚集索引

在title、author、star上建立非聚集索引

select * from news where title like '"&abigale&"%' or author like '"&abigale&"%'

方案5:

主鍵id,預設為聚集索引

在title、author、star上建立非聚集索引

select * from news where title like '"&abigale&"%'

或select * from news where author like '"&abigale&"%'

SQL Server資料庫查詢

開啟我們的sql server資料庫,找到要查詢的資料庫表,右鍵單擊然後選擇新建查詢,select 選擇我們要查詢的表sys academe學院表 聯合 sys class.classname班級表的班級名稱和sys grade.gradename年級表的年級編號來查詢出資料。下面是查詢的 sele...

SQL Server 跨資料庫查詢

語句 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b b where a.field b.field sqlserver資料庫 這句是對映乙個...

查詢SQL SERVER 資料庫版本

select substring cast serverproperty productversion as nvarchar 128 1,charindex cast serverproperty productversion as nvarchar 128 1 1 8 對應 sql server...