會造成全表掃瞄的SQL語句及應對措施

2021-10-23 16:40:43 字數 791 閱讀 9189

全表掃瞄時,會造成cpu和記憶體的額外消耗,甚至會導致伺服器崩潰。所以我們應避免。

如:select account from member where nickname like 『%***%』

或者 select account from member where nickname like 『%***』

建議使用select account from member where nickname like 『***%』

如:select account from member where nickname = null;

建議在設計欄位時盡量將字段的預設值設為0,改為select account where nickname = 0;

如:select account where salary * 0.8 = 1000 或者 select account where sustring(nickname,1,3) = 『zhangxiaolong』;

建議使用 <,<=,=,>,>=,between等;

如:select account from member where id = 1 or id = 2;

建議使用union all,改為 select account from member where id = 1 union all select account from member where id = 2;

如:你表中定義的 salary 是int,但是你sql傳入字串 select account from member where salary=『100』 即使salary有索引也用不到

Oracle查詢全表掃瞄的SQL語句

對於sql的執行計畫,一般盡量避免table access full的出現,那怎樣去定位,系統裡面哪些sql指令碼存在table access full行為,對於9i及以後版本,使用以下語句即可 select from v sql plan v where v.operation table acc...

Sql語句中IN和exists的區別及應用

首先,查詢中涉及到的兩個表,乙個user和乙個order表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較小的時候,in的速度較快。具體sql語句如下...

Sql語句中IN和exists的區別及應用

sql語句中in和exists的區別及應用 首先,查詢中涉及到的兩個表,乙個user和乙個order表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較...