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