1樓:陽光上的橋
優化sql語句的道理是相同的,無論是網頁還是delphi程式。
一般優化方法是通過主鍵或者索要定位,可以解決80%以上的效能問題。就是在你的所有的網頁檔案裡面搜尋where子句,where後面一般都是欄位表示式,通過修改where語句或者更改資料庫設計,可以解決效率問題。
where語句原則一,為where子句裡面的欄位建立索引,比如where 文章類別=『.的語句,給「文章類別」建立索引,能提高查詢語句效率。當然建立索引也有原則的,如果乙個表主要是進行查詢操作,那麼索引不怕多,如果表主要在進行修改(包括新增、刪除),那麼索引就儘量少才好,一般的表都既有讀也有寫,你就要根據客戶活動規律分析後處理。
還有,索引儘量建立在比較值比較散的欄位上,比如一般情況不要在值為「是/否」的欄位上建立索引。
where語句原則二,如果where子句後面有多個欄位,應為這幾個欄位建立聯合索引,並且順序與where語句中的一致,建立聯合索引以後,在第乙個欄位上的單獨索引可以刪除。如果你的where語句對某兩個欄位的查詢順序不統一,需要調整where語句,使它統一。
當where語句後面的欄位沒有索引,但是本語句也可以修改一下使用另外的欄位查詢結果時,請修改where語句,不要建立太多的索引。比如select * from 使用者 where 使用者名稱=『?的語句就應該修改為select * from 使用者 where 使用者名稱id=『?
解決完所有的索引問題以後,還可以繼續修改程式提高效能的。比如許多dbms有查詢cache功能,就是重複執行剛才執行的乙個語句時,系統會快速返回結果。我們寫sql的時候就要把相同語句寫成一樣,不要一會是where id=5,一會又是where 5=id
2樓:智尋綠
這個問題我朋友研究過 我幫你看一下 之後發**給你。
sql語句效率問題
3樓:擺渡浮橋
對比查詢效能,不能只看語句,而是要看執行計劃。即使是相同的查詢語句,在不同的情況下也有可能生成不同的執行計劃。
之所以乙個查詢效能高,是因為id欄位上有聚集索引。從查詢計劃來看,使用了合併連線(merge join),合併連線是非常高效的連線。
而第二個查詢使用了max聚合,聚合運算本身效率比較低,而且因為聚合的使用,使得不能使用合併連線,而只能使用巢狀迴圈(nested loop),所以效率低。
ASP高手請進,關於sql的語句
函式改為 function classcon x if x 1 then classcon webid 1 and forum 302 elseif x 2 then classcon webid 1 and forum 312 elseif x 3 then classcon webid 2 an...
ASP編寫過程中的SQL查詢問題
sql select from users where username text 改為 樓主這裡的使用者應該是字元吧 上述sql語句不正確,故下面的rs.recordcount也不顯示0 dim text,password text trim request.form text password ...
SQL語言的問題,sql語句的問題?
在sql server中兩者沒有區別,但在oracle的sql語句中,delete from是不標準的語法,執行無法通過。oracle下執行delete from語句 成功 oracle下執行delete from語句 失敗 經驗分享 8種常見sql錯誤用法 關於sql server的一個問題?au...