IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)數(shù)據(jù)庫(kù)MSSQL → 教你快速掌握數(shù)據(jù)庫(kù)查詢優(yōu)化的實(shí)用技巧

教你快速掌握數(shù)據(jù)庫(kù)查詢優(yōu)化的實(shí)用技巧

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

數(shù)據(jù)庫(kù)查詢優(yōu)化的實(shí)用技巧:

本文中,abigale代表查詢字符串,ada代表數(shù)據(jù)表名,alice代表字段名。

技巧一:

問(wèn)題類型:access數(shù)據(jù)庫(kù)字段中含有日文片假名或其它不明字符時(shí)查詢會(huì)提示內(nèi)存溢出。

解決方法:修改查詢語(yǔ)句

以下為引用的內(nèi)容:
sql="select * from ada where alice like '%"&abigale&"%'"
改為
sql="select * from ada"
rs.filter = "alice like '%"&abigale&"%'"

技巧二:

問(wèn)題類型:如何用簡(jiǎn)易的辦法實(shí)現(xiàn)類似百度的多關(guān)鍵詞查詢(多關(guān)鍵詞用空格或其它符號(hào)間隔)。

解決方法:

以下為引用的內(nèi)容:

'//用空格分割查詢字符串
ck=split(abigale," ")
'//得到分割后的數(shù)量
sck=UBound(ck)

sql="select * ada where"

在一個(gè)字段中查詢
For i = 0 To sck
SQL = SQL & tempJoinword & "(" & _
"alice like '"&ck(i)&"%')"
tempJoinWord = " and "
Next

在二個(gè)字段中同時(shí)查詢
 

以下為引用的內(nèi)容:

For i = 0 To sck
SQL = SQL & tempJoinWord & "(" & _
"alice like '"&ck(i)&"%' or " & _
"alice1 like '"&ck(i)&"%')"
tempJoinabigale = " and "
Next


技巧三:提高查詢效率的幾種技巧

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

2. 經(jīng)過(guò)實(shí)踐驗(yàn)證,charindex()并不比前面加%的like更能提高查詢效率,并且charindex()會(huì)使索引失去作用(指sqlserver數(shù)據(jù)庫(kù))

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

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

(指sqlserver數(shù)據(jù)庫(kù))

4. '%"&abigale&"%' 與'"&abigale&"%' 在查詢時(shí)的區(qū)別:

比如你的字段內(nèi)容為:斯卡布羅集市

'%"&abigale&"%' :會(huì)通配所有字符串,不論查"集市"還是查"斯卡",都會(huì)顯示結(jié)果。

'"&abigale&"%' :只通配前面的字符串,例如查"集市"是沒(méi)有結(jié)果的,只有查"斯卡",才會(huì)顯示結(jié)果。

5. 字段提取要按照"需多少、提多少"的原則,避免"select *",盡量使用"select 字段1,字段2,字段3........"。實(shí)踐證明:每少提取一個(gè)字段,數(shù)據(jù)的提取速度就會(huì)有相應(yīng)的提升。提升的速度還要看您舍棄的字段的大小來(lái)判斷。

6. order by按聚集索引列排序效率最高。一個(gè)sqlserver數(shù)據(jù)表只能建立一個(gè)聚集索引,一般默認(rèn)為ID,也可以改為其它的字段。

7. 為你的表建立適當(dāng)?shù)乃饕⑺饕梢允鼓愕牟樵兯俣忍岣邘资畮装俦。(指sqlserver數(shù)據(jù)庫(kù))

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

Sqlserver索引與查詢效率分析。

表 News

字段

Id:自動(dòng)編號(hào)

Title:文章標(biāo)題

Author:作者

Content:內(nèi)容

Star:優(yōu)先級(jí)

Addtime:時(shí)間

記錄:100萬(wàn)條

測(cè)試機(jī)器:P4 2.8/1G內(nèi)存/IDE硬盤(pán)

方案1:

主鍵Id,默認(rèn)為聚集索引,不建立其它非聚集索引

以下為引用的內(nèi)容:
select * from News where Title like '%"&abigale&"%'
or Author like '%"&abigale&"%' order by Id desc

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

查詢時(shí)間:50秒

方案2:

主鍵Id,默認(rèn)為聚集索引

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

以下為引用的內(nèi)容:

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

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

查詢時(shí)間:2 - 2.5秒

方案3:

主鍵Id,默認(rèn)為聚集索引

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

select * from News where Title like '"&abigale&"%'
or Author like '"&abigale&"%' order by Star desc
 
從字段Title和Author中模糊檢索,按Star排序

查詢時(shí)間:2 秒

方案4:

主鍵Id,默認(rèn)為聚集索引

在Title、Author、Star上建立非聚集索引
select * from News where Title like '"&abigale&"%' or Author like '"&abigale&"%'
 
從字段Title和Author中模糊檢索,不排序查詢時(shí)間:1.8 - 2 秒

方案5:

主鍵Id,默認(rèn)為聚集索引

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

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

select * from News where Author like '"&abigale&"%'
 
從字段Title 或 Author中檢索,不排序查詢時(shí)間:1秒

關(guān)鍵詞標(biāo)簽:優(yōu)化,查詢,數(shù)據(jù)庫(kù),掌握

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟sql server系統(tǒng)表?yè)p壞的解決方法sql server系統(tǒng)表?yè)p壞的解決方法MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶Access、SQL Server、Oracle常見(jiàn)應(yīng)用的區(qū)別Access、SQL Server、Oracle常見(jiàn)應(yīng)用的區(qū)別

相關(guān)下載

人氣排行 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù)SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù)配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改SQL Server 2005降級(jí)到2000的正確操作步驟修改Sql Server唯一約束教程淺談JSP JDBC來(lái)連接SQL Server 2005的方法SQL Server創(chuàng)建表語(yǔ)句介紹