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.避免隱...