怎樣提升sql語句的查詢速度,怎樣提升SQL語句的查詢速度?

時間 2021-12-23 01:30:14

1樓:

1.選擇最有效率的表名順序。oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表(基礎表 driving table)將被最先處理.

在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連線查詢, 那就需要選擇交叉表(intersection table)作為基礎表, 交叉表是指那個被其他表所引用的表。

2.where子句中的連線順序。oracle採用自下而上的順序解析where子句,根據這個原理,表之間的連線必須寫在其他where條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾。

3.select子句中儘量避免使用 『* 』。

4.使用decode函式來減少處理時間。

5.查詢結果能不排序就不排序。儘量不用order by,distinct,union,minus,intersect。

6.用表連線代替子查詢in。

7.用索引提高查詢效率。但是索引不能隨便用,還要搞清楚每種索引適用的情況,比如b*索引、複合索引、函式索引、bitmap索引等。

雖然使用索引能得到查詢效率的提高,但是也必須注意到它的代價. 索引需要空間來儲存,也需要定期維護, 每當有記錄在表中增減或索引列被修改時, 索引本身也會被修改. 這意味著每條記錄的insert , delete , update將為此多付出幾 次的磁碟i/o,因為索引需要額外的儲存空間和處理,那些不必要的索引反而會使查詢反應時間變慢。

8.不能再索引列上適用not、<>、is null、not is null、做四則運算,否則索引會被抑制,不起作用,變成全表掃描。

9.用》=替代》。比如select * from s where id>=4效率select * from s where id>3高。

兩者的區別在於, 前者dbms將直接跳到第一個id等於4的記錄,而後者將首先定位到id=3的記錄並且向前掃描到第一個dept大於3的記錄。

10.如果表的資料量很大,可以為該表建分割槽。經常使用的子查詢可以建成檢視。..

......

2樓:匿名使用者

他說的話特人工和放大合同

3樓:匿名使用者

可以進行分頁,或排序,或分組

怎樣提高sqlserver的like查詢速度?

4樓:匿名使用者

如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like ''a%'' 使用索引, like ''%a'' 不使用索引用 like ''%a%'' 查詢時,查詢耗時和欄位值總長度成正比,所以不能用char型別,而是varchar。對於欄位的值很長的需要建全文索引。

5樓:

sql語句只要有 like 關鍵字就會破壞其索引,這也是sql最大的弊端,想要高效率全文檢索的話,可以嘗試一些專門的檢索系統:如 lucence

6樓:

索引可以提高的,like的話要看是「%abc%」還是「abc%」的,前者速度比較慢,後者就快了,和「=」差不多,前者可以用全文索引來彌補

還可以用top n來查詢,提高速度

怎樣用SQL語句,查詢庫存,怎樣用 SQL 語句,查詢庫存? 20

select 商品,入庫 出庫 as 庫存 from select 商品,sum 入庫數量 as 入庫 from 商品入庫表 group by 商品 tmp tblrkleft join select 商品,sum 入庫數量 as 入庫 from 商品入庫表 group by 商品 tmp tblc...

mysql查詢最近幾天的資料sql語句怎樣寫,給幾個例子

例如有一個 認證表 id 認證表主鍵 user 賬號 username 使用者名稱 logintime 認證時間 logouttime 登出時間 我想查詢最近上線的3條資料,我可以這樣寫sqlselect from 認證表 order by logintime desc limit 1,3 執行就可...

sql語句的where查詢語句中 select userid

這裡的 是引數佔位符,表示在執行查詢時用傳入的引數替換該內容在你的例子中,pstmt.setstring 1,userid 將應用得到的引數userid傳給第一個引數,pstmt.setstring 2,password 將應用得到的引數password傳給第二個引數 小白九久玩科技 where u...