資料庫 SQL優化小結

2021-08-27 00:05:33 字數 1185 閱讀 6488

雖然前段時間有學習過這方面的知識,但是在面試的時候,腦子卻一片空白。我想一方面的原因是自己在開發中缺乏對sql優化這方面的關注,也就是缺乏實地應用;另一方面是缺乏總結。

sql優化主要是為了提高資料crud的效率。因為索引可以提高資料檢索的效率,所以,大部分的sql優化策略都是為了避免某些sql語句導致索引失效(避免全表掃瞄)。這裡列舉幾條好記並且常碰到的sql優化的規則:

1、別把用不到的資料查出來

select * from table_name;  #避免使用這樣型別的語句
應該根據業務需求,查詢有用的資料,比如:

select username,password from table_name;
2、避免在where字句中對字段值進行null值判斷----導致索引失效

select username from table_name where num is null;
3、避免在 where 子句中使用 != 或 <> 操作符----導致索引失效

select username from table_name where num !=0;
4、避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄

select username from table_name where age=1 or ***='animal';
5、避免使用模糊查詢like %***%(『name%這種是可以的』)----木有效率,全表掃瞄

select username from table_name where school like '%qinghua%';
6、能用between...and,exist就別用in/not in了;在where子句中避免對索引字段進行表示式運算或者函式運算,大兄弟,索引很重要!

7、記住索引的最左字首原則,盡量按照索引字段定義的順序進行資料的條件過濾。

備註:記住一點,sql語句不要導致資料庫引擎放棄使用索引。但是索引也不宜過多(最好別超過6個),索引可以提高資料的檢索select,但是過多的索引不利於資料的insert/update,因為這些操作可能導致需要重建索引。

資料庫優化小結

where條件的優化 1 in 至少多乙個轉換的過程 先試圖轉成多個表的連線,如果轉換不成功先執行in裡面的子查詢,再查詢外層記錄 2 notin 不能應用表索引,可用not exists替換的 3 不用索引,全表掃瞄。替換方案 x or 與 的區別 2會從2開始找資料,3則是從3開始找資料。但是 ...

sql資料庫小結

管理表 建立表的基礎sql語法如下 create table 表名 列名 列的資料型別 列的約束 其中,表名在乙個資料庫中必須是唯一的,並且符合識別符號規則。列名在乙個表內必須是唯一的,並且符合識別符號 則。列的資料型別決定了什麼樣的資料可以儲存在列中,而列的約束定義了建立列時的限制條件。刪除表 d...

sql優化,資料庫優化

1.sql的執行順序 from 表名 where 條件 執行順序是從後往前,where條件後面的語句盡可能縮短where 資料執行的範圍。先group by 後order by select 查詢 2.避免過多的聯查,設計合理的表關係 3.遵守常見sql規範,盡可能減少 4.如果表字段過多,經常展示...