sql
優化(變多次維護為一次維護)
sql優化分為:ddl、dml、dql
一、ddl優化
1 、通過禁用索引來提供匯入資料效能 。 這個操作主要針對有資料庫的表,追加資料
//去除鍵
alter table test3 disable keys;
//批量插入資料
insert into test3 select * from test;
//恢復鍵
alter table test3 enable keys;
變多次索引維護為一次索引維護
2、 關閉唯一校驗
set unique_checks=0 關閉
//批量插入資料
insert into test3 select * from test;
set unique_checks=1 開啟
變多次唯一校驗為一次唯一校驗
3、修改事務提交方式(匯入
)set autocommit=0 關閉# false
//批量插入
set autocommit=1 開啟 true
變多次事務提交為一次事務提交
二、dml優化
insert into test (name) values(2);
insert into test values(1,3);
insert into test values(1,4);
//合併多條為一條 mybatis的批量操作:
insert into test values(1,2),(1,3),(1,4)
變多次事務提交為一次事務提交
三、dql優化
(1) 1 order by
優化1、多用索引排序
2、普通結果排序(非索引排序)
filesort
索引本身就是排序的,所以多使用索引
。(2) group by
優化查詢某個時間的付款總和
explain
select date_format(payment_date,'%y-%m'),sum(amount) from payment group by date_format(payment_date,'%y-%m') ;
explain
select date_format(payment_date,'%y-%m'),sum(amount) from payment group by date_format(payment_date,'%y-%m') order by null;
在group by是使用
order by null,
取消預設排序
(3) subquery
巢狀優化
在客戶列表找到不在支付列表的客戶
#在客戶列表找到不在“支付列表”的客戶
, 查詢沒買過東西的客戶
explain
select * from customer where customer_id not in (select distinct customer_id from payment);
explain
select * from customer c left join payment p on(c.customer_id=p.customer_id) where p.customer_id is null -- 這種是基於“索引”外鏈
(4)
or優化
在兩個獨立索引上使用or的效能優於
1、 or
兩邊都是用索引欄位做判斷,效能好!!
2、 or
兩邊,有一邊不用,效能差
3、 如果
employee
表的name
和email
這兩列是一個複合索引,但是如果是
:name='a' or email='b'
這種方式,不會用到索引!
(5) limit
優化select film_id,description from film order by title limit 50,5;
select a.film_id,a.description from filqm a inner join (select film_id from film order by title limit 50,5)b on a.film_id=b.film_id
30種sql
語句優化:
SQL優化 MySQL優化(概述)
一 優化概述 資料庫效能取決於資料庫級的幾個因素,如表,查詢和配置設定。這些軟體結構導致cpu和i o操作在硬體級別,您必須最小化並儘可能高效。在處理資料庫效能時,首先要了解軟體方面的高階規則和準則,並使用掛鐘時間來衡量效能。當您成為專家時,您將進一步瞭解內部發生的事情,並開始測量cpu週期和i o...
mysql優化(4) sql優化小技巧
這裡對sql優化做一下簡單的總結 對查詢進行優化,要儘量避免全表掃描,首先應該考慮在where和order by 涉及的列上建立索引 避免在where子句中對欄位進行null值判斷,否則將導致引擎棄用索引而進行全表掃描 避免在where子句中使用 或 普通索引無法使用,但是主鍵索引會繼續走索引。避免...
Mysql優化3 資料庫Sql優化
1 通過show status 瞭解sql的執行頻率和時間 2 定位低效的sql語句 3 通過explain分析低效語句 4 確定問題並選擇優化措施 show status like uptime 啟動時間 show status like com select 查詢次數 show status l...