資料庫優化專題 7 SQL語句優化

2021-10-05 20:47:02 字數 2007 閱讀 4542

資料庫優化專題—1、表的主鍵用數字還是uuid

資料庫優化專題—2、邏輯刪除還是物理刪除

資料庫優化專題—3、千萬記錄如何快速分頁

資料庫優化專題—4、讀多寫少和讀多寫多

資料庫優化專題—5、刪改資料如何避免鎖表

資料庫優化專題—6、如何避免偷換交易中的商品資訊

資料庫優化專題—7、sql語句優化

資料庫優化專題—8、mysql引數優化

資料庫優化專題—9、索引優化

資料庫優化專題—10、儲存優化

資料庫優化專題—11、資料庫結構優化

這節主要講解一些sql優化方式。

select * from t_emp;

//資料庫執行,1、查詢表結構 2、換欄位 3、再執行

select name from t_emp where name like '%s%'

;//不走索引,全表掃瞄

select name from t_emp where name like 's%'

;//走索引

select name from t_emp order by deptno;
select name from t_emp where comm is not null;

//不走索引

select name from t_emp where comm >=0;

//走索引,設定非空為大於0值

select name from t_emp where comm =-1

;//走索引,設定非空為-1值

select name from t_emp where deptno !=20;

//不走索引,全表掃瞄

select name from t_emp where deptno <

20 and deptno>20;

//走索引

select name from t_emp where deptno=

20 or deptno=30;

//deptno=20走索引,deptno=30不走索引

select name from t_emp where deptno=

20 union all

select name from t_emp where deptno=30;

//走索引

select name from t_emp where deptno=

20 or deptno=30;

//deptno=20走索引,deptno=30不走索引

select name from t_emp where deptno=

20 union all

select name from t_emp where deptno=30;

//走索引

select name from t_emp where deptno=

'20'

;//資料庫先轉換資料型別再比較,效率低

select name from t_emp where salary*

12>=

100000

;//不走索引

select name from t_emp where salary>=

100000/12

;//走索引

select name from t_emp where year

(hiredate)

>=

2000

;//不走索引

select name from t_emp where hiredate>=

'2020-01-01 00:00:00'

;//走索引

優化sql語句,主要是如何走索引查詢,減少資料庫計算等。

7 SQL優化技術

7.1 改變訪問結構 7.2 修改sql語句 7.3 提示hint 提示的分類 初始化引數提示 all rows,cursor sharing extract,dynamic sampling,first rows,gather plan statistics 查詢轉化提示 no eliminate...

資料庫優化 sql語句優化

1 group by語句優化 因為mysql對所有group by的字段進行排序,所以如果包含group by但是想要避免排序結果的消耗,可以指定order by null來進行group by的排序。select id,sun moneys from sales group by id expla...

資料庫 sql語句優化

寫操作 write 1 如果你同時從同一客戶插入很多行,使用多個值表的insert語句。這比使用分開insert語句快 在一些情況中幾倍 insert into test values 1,2 1,3 1,4 2 如果你從不同客戶插入很多行,能通過使用insert delayed語句得到更高的速度。...