sql查詢優化

2021-07-26 17:27:08 字數 948 閱讀 1334

網上很多 sql優化 有的是坑人的,本人乙個個試的

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。

2.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃瞄。

3. in 能索引掃瞄(本人測試)和 not in (不能索引掃瞄)    ---between  代替in(網上流傳 是假的)

4.下面的查詢也將導致全表掃瞄:

sql ** : select id from t where name like '%c%';
若要提高效率,可以考慮全文檢索。

5.除法將不走索引查詢,乘法走索引查詢

sql ** : select id from t where num/2=100;

可以這樣查詢:

sql ** : select id from t where num=100*2;
6.應盡量避免在 where 子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄。如:

sql ** : select id from t where substring(name,1,3)='abc';#name 以 abc 開頭的 id
應改為:

sql ** : select id from t where name like 'abc%';
------上面這一條  用substring   是 沒有有用的索引,,迷糊查詢有能用的索引,但是type 型別和sub的都是index

7.不要在 where 子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無法正確使用 索引。

8.在使用索引字段作為條件時,如果該索引是復合索引,那麼必須使用到該索引中的第乙個字段作為條件 時才能保證系統使用該索引, 否則該索引將不會 被使用, 並且應盡可能的讓字段順序與索引順序相一致。

查詢優化 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條記錄中查詢其中一條,那查詢優化器會選擇 索引掃瞄 方式。該錶如果使用了歸檔,那查詢優化器就會改變方案,採用 全表掃瞄 方式。執行計...