mysql ds mysql sql語句的一些優化

2021-10-20 21:58:16 字數 1061 閱讀 7710

1、一般情況在select 資料比較多的情況下需要建立索引,首先應考慮在 where 及 order by 涉及的列上建立索引

2、優化總體來說主要是要減少資料庫表的全表檢索和防止索引失效等情況。

以下為使得索引失效的一些情況:

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

2)應盡量避免在 where 子句中使用 or 操作符,否則也會放棄索引進行全表掃瞄 應:

select id from t where num=10 or num=20

可以這樣查詢:

select id from t where num=10

union all

select id from t where num=20

3)同上面or操作符一樣,盡量避免 in 和 not in 的使用,如果in裡面的值是連續的 可以考慮使用

between  and

4) 避免在where 後面對欄位進行表示式的操作, 否則將引擎放棄使用索引而進行全表掃瞄,這裡是指           對欄位進行表示式操作而不是所有的表示式操作   比如:

select  id from test where  num/2=10 應改為

select  id from test where  num=10*2

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

5) 並不是所有索引對查詢都有效,sql是根據表中資料來進行查詢優化的,當索引列有大量資料重複              時,sql查詢可能不會去利用索引

6)應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃               描,如:

select id from t where num is null 可以在num上設定預設值0, 確保表中num列沒有 null值,然             後這樣查詢: select id from t where num=0

3,資料查詢時候盡量把能過濾掉大量資料的放前面

一些調優引數

select sum pins reloads sum pins lib cache from v librarycache 查詢sql 分析解析率,大於90 說明sql解析正常,無需更改,至於更改方法,研究中 select sum gets getmisses sum gets hit from ...

LINQ 的 一些語句

1.找出b1在a1中 以逗號分隔的 完全匹配的字串結果 stringa1 abc,efg,hik,lmn,opq stringb1 efg,d3l,opq,lmn var result a1.split intersect b1.split intersect 通過使用預設的相等比較取出兩個序列的交...

一些sql語句

一。在oracle中建表,怎麼實現id自動編號 1 建表 create table code test id int,name varchar2 20 2.建立序列 create sequence s country id increment by 1 start with 1 maxvalue 9...