sql優化建議

2021-09-07 08:44:27 字數 730 閱讀 2644

1、少用(不用)多表操作(子查詢,連線查詢)

2、大量資料的插入

多條insert

load data into talbe

建議,先關閉約束及索引,完成資料插入,再重新生成索引及約束。

針對myisam:

> alter table 表名 disable keys; --禁用索引約束

> alter table 表名 enable keys; --啟用

針對innodb:

drop index, drop constraint --刪除二級索引,約束,要保留主鍵

set autocommit = 0;

begin transaction;

大量插入

commit;

add index, add constraint

insert into 表名 values();

insert into 表名 values();

insert into 表名 values();

或 insert into 表名 values(),(),();

3、分頁

limit offset,size 的使用,會大大提公升無效資料的檢索。

應該使用條件過濾方式,將檢索到的資料盡可能精確定位到需要的資料上。

4、order by rand()

通過某種運算,確定隨機主鍵,然後從資料表中獲取。

SQL優化建議

這篇文章久之前,不知從 看到就儲存在本地的txt文件中,現在貼到部落格中,防止消失。1.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 可以在num上設定預設值0,確保表...

優化SQL的建議

1.用truncate替代delete 當刪除表中的記錄時,在通常情況下,回滾段 rollback segments 用來存放可以被恢復的資訊。如果你沒有 commit事務,oracle會將資料恢復到刪除之前的狀態 準確地說是恢復到執行刪除命令之前的狀況 而當運用truncate時,回滾段不再存放任...

sql語句優化建議

1.不論乙個sql中涉及到多少表,每次都用兩個表 結果集 操作,得到新的結果後,再和下乙個表 結果集 操作。2.避免在select f1,select f2 from tableb from tablea 這樣得到欄位列。直接用tablea和tableb關聯得到a.f1,b.f2就可以了。3.避免隱...