MySQL優化(一)常用SQL優化

2021-09-14 00:59:50 字數 1821 閱讀 6418

一、新增:

二、刪除:delete from 刪除語句加where條件,如果是刪除全部記錄,使用truncate table  表名,而不使用delete語句。

三、修改

四、查詢:索引這裡就不重複了,一般在建表時對常用的查詢欄位就應該加上索引。

1、單錶查詢:首先盡量只查詢單錶,可以分解成多次單錶查詢的盡量分解;其次,在多表查詢的優化中,也可以以表來單位來優化,如加索引等;

2、連線查詢:對連線查詢on後面的條件加上索引;

3、合併查詢:

4、聚合函式查詢:

5、分組查詢group by:少用group by語句。如果使用了group by,消除group by的無謂排序:在group by ..後面加上 order by null;

6、排序order by:sql查詢會預設按照主表的id排序,盡量不要加上其他的排序;

7、in查詢:in查詢範圍不要太大;

8、分頁查詢:千萬級mysql分頁,使用 select * from limit 0,10 分別對錶進行常規分頁,當偏移量過大,如limit 1000000000,10掃瞄的行數會非常多造成查詢過慢。mysql的limit工作原理就是先讀取前面n條記錄,然後拋棄前n條,讀後面m條想要的,所以n越大,偏移量越大,效能就越差。優化方法有下面幾種:

(1)子查詢法:

select c1,c2,cn... from table where id>=(select id from table limit 20000,1 )  limit 10;
(2)唯讀索引方法::效能mysql一書中提到的

select * from `content` as t1   

join (select id from `content` order by id desc limit ".($page-1)*$pagesize.", 1) as t2

where t1.id <= t2.id order by t1.id desc limit $pagesize;

優化前:select c1,c2,cn... from member order by last_active limit 50,5    優化後:

select c1, c2, cn .. . from member inner join (select member_id from member order by last_active limit 50, 5) using (member_id)
區別在於,優化前的sql需要更多i/o浪費,因為先讀索引,再讀資料,然後拋棄無需的行。而優化後的sql(子查詢那條)唯讀索引(cover index)就可以了,然後通過member_id讀取需要的列。

(3)in查詢法:第一步用用程式讀取出id,然後再用in方法讀取所需記錄:   

select id from table limit 20000, 10;

select c1, c2, cn .. . from table where id in (id1, id2, idn.. .)

建議使用第一種子查詢方法,即:

#查詢分頁

select

idfrom

t_user

where

...and id >= (

select

idfrom

t_user

where

...limit (page - 1) * pagesize, 1)

limit pagesize;

9、

MySQL 常用SQL優化

mysql 常用sql優化 一.大批量插入資料 1.對於load myisam儲存引擎的表,可以通過關閉開啟myisam表非唯一索引的更新來提公升匯入速度 例 mysql alter table tbl name disable keys mysql load data infile home my...

MySQL優化 SQL優化

其實sql語句的優化核心就在避免全表掃瞄上面 對查詢語句優化,避免全表掃瞄 首先應考慮在where及order by涉及的列上建立索引 避免在where子句中對字段進行表示式和函式操作 避免where進行null 等運算導致的全表掃瞄 在group by後面增加order by null就可以防止g...

MySQL 常用SQL優化(五)

一 分頁優化查詢。一般分頁查詢時,通過建立覆蓋索引能夠比較好地提高效能。乙個常見又非常頭疼的問題 limit 10000,10 此時mysql排序出10020條記錄後僅僅返回第10001到10020條記錄,前10000條記錄都會被拋棄,查詢和排序的代價非常高。1 第一種優化思路。在索引上完成排序分頁...