乙個有效的優化與不優化或錯誤優化之間的差別,可能可以讓你的程式執行速度差別幾十倍甚至幾百倍。
以下 word 代表查詢字串,tablename代表資料表名,column代表欄位名
技巧一:
問題型別:access資料庫欄位中含有日文片假名或其它不明字元時查詢會提示記憶體溢位。
解決方法:修改查詢語句
sql="select * from tablename where column like '%"&word&"%'"
改為sql="select * from tablename"
rs.filter = " column like '%"&word&"%'"
技巧二:
解決方法:
'//用空格分割查詢字串
ck=split(word," ")
'//得到分割後的數量
sck=ubound(ck)
sql="select * tablename where"
在乙個欄位中查詢
for i = 0 to sck
sql = sql & tempjoinword & "(" & _
"column like '"&ck(i)&"%')"
tempjoinword = " and "
next
在二個欄位中同時查詢
for i = 0 to sck
sql = sql & tempjoinword & "(" & _
"column like '"&ck(i)&"%' or " & _
"column1 like '"&ck(i)&"%')"
tempjoinword = " and "
next
技巧三:大大提高查詢效率的幾種技巧
1. 盡量不要使用 or,使用or會引起全表掃瞄,將大大降低查詢效率。
2. 經過實踐驗證,charindex()並不比前面加%的like更能提高查詢效率,並且charindex()會使索引失去作用(指sqlserver資料庫)
3. column like '%"&word&"%' 會使索引不起作用
column like '"&word&"%' 會使索引起作用(去掉前面的%符號)
(指sqlserver資料庫)
4. '%"&word&"%' 與'"&word&"%' 在查詢時的區別:
比如你的字段內容為 乙個容易受傷的女人
'%"&word&"%' :會通配所有字串,不論查「受傷」還是查「乙個」,都會顯示結果。
'"&word&"%' :只通配前面的字串,例如查「受傷」是沒有結果的,只有查「乙個」,才會顯示結果。
5. 字段提取要按照「需多少、提多少」的原則,避免「select *」,盡量使用「select 欄位1,欄位2,欄位3........」。實踐證明:每少提取乙個字段,資料的提取速度就會有相應的提公升。提公升的速度還要看您捨棄的字段的大小來判斷。
6. order by按聚集索引列排序效率最高。乙個sqlserver資料表只能建立乙個聚集索引,一般預設為id,也可以改為其它的字段。
7. 為你的表建立適當的索引,建立索引可以使你的查詢速度提高幾十幾百倍。(指sqlserver資料庫)
以下是建立索引與不建立索引的乙個查詢效率分析:
sqlserver索引與查詢效率分析。
表 news
記錄:100萬條
測試機器:p4 2.8/1g記憶體/ide硬碟
方案1:
主鍵id,預設為聚集索引,不建立其它非聚集索引
select * from news where title like '%"&word&"%' or author like '%"&word&"%' order by id desc
方案2:
主鍵id,預設為聚集索引
在title、author、star上建立非聚集索引
select * from news where title like '"&word&"%' or author like '"&word&"%' order by id desc
方案3:
主鍵id,預設為聚集索引
在title、author、star上建立非聚集索引
select * from news where title like '"&word&"%' or author like '"&word&"%' order by star desc
方案4:
主鍵id,預設為聚集索引
在title、author、star上建立非聚集索引
select * from news where title like '"&word&"%' or author like '"&word&"%'
方案5:
主鍵id,預設為聚集索引
在title、author、star上建立非聚集索引
select * from news where title like '"&word&"%'
或select * from news where author like '"&word&"%'
查詢優化 SQL優化
查詢優化注意點 代表查詢速度比較 1 所有查詢必須注意 的使用必要性 cout 1 cout 2 字段 主鍵索引 字段 普通索引 字段 沒有索引 3 乙個字段 多個字段 欄位多越慢 4 大於10000和大於10001的區別 後者大於前者 5 列沒別名 列 有別名6 兩個條件,where時應該將符合資...
查詢優化 sql
查詢1 declare d datetime set d getdate select top 1000 from product where contains name,男上裝 or contains text,男上裝 select datediff ms,d,getdate set d getd...
優化sql查詢
如何寫出高效能的sql語句 執行計畫是資料庫根據sql語句和相關表的統計資訊坐出的乙個查詢方案,這個方案是由查詢優化器自動分析產生的,比如一條sql語句如果用來從乙個n條記錄中查詢其中一條,那查詢優化器會選擇 索引掃瞄 方式。該錶如果使用了歸檔,那查詢優化器就會改變方案,採用 全表掃瞄 方式。執行計...