一、說到SQL優化,很多人就知道利用索引,但是當利用索引之後,查詢速度還是慢怎麼解決?
1、利用Explain檢視sql執行是否使用了索引,
2、sql優化如下
1)、like語句查詢時,全表查詢,索引不會生效;
2)、where子句中使用 != 或 <>操作符,索引不會生效;
如:
SQL:SELECT id FROM A WHERE ID != 1
優化成:SELECT id FROM A WHERE ID>1 OR ID<1
3)、where子句中使用 IS NULL 或 IS NOT NULL,索引不會生效;
如:
SQL:SELECT id FROM A WHERE num IS NULL
優化成num上設定預設值0,確保表中num沒有null值,
然後SQL為:SELECT id FROM A WHERE num=0
4)、使用union all(查詢所有,有重複) 或 nuin(查詢時,去除重複資料,效能慢)替換or;
SQL:SELECT id FROM A WHERE num =10 or num = 20
優化成:SELECT id FROM A WHERE num = 10 union all SELECT id FROM A WHERE num=20
5)、in和not in替換;
方案一:between替換in
如SQL:SELECT id FROM A WHERE num in(1,2,3)
優化成:SELECT id FROM A WHERE num between 1 and 3
方案二:exist替換in(in 是在記憶體中遍歷比較,exist 需要查詢資料庫,所以當B的資料量比較大時,exists效率優於in.)
如SQL:SELECT id FROM A WHERE num in(select num from b )
優化成:SELECT num FROM A WHERE num exists(select 1 from B where B.num = A.num)
6)、不要在where子句中的“=”左邊進行函式、算數運算或其他表示式運算,否則系統將可能無法正確使用索引;
如SQL:SELECT id FROM A WHERE num/2 = 100
優化成:SELECT id FROM A WHERE num = 1002
7)、用具體的欄位列表替換"";
8)、使用“臨時表”暫存中間結果,避免多次掃描主表;
9)、limit分頁優化,當偏移量特別時,limit效率會非常低;
如:SELECT id FROM A LIMIT 90000,10
優化後:select id from A order by id limit 90000,10
10)、批量插入優化 ;
INSERT into person(name,age) values('test',1),('test',2),('test',3)
11)、Inner join 和 left join、right join、子查詢。
查詢效能Inner join>left join/right join>子查詢
十七、Mysql之SQL優化查詢
相關文章
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- MySQL調優之查詢優化MySql優化
- SQL查詢優化SQL優化
- MySQL查詢優化MySql優化
- MySQL分優化之超大頁查詢MySql優化
- [玩轉MySQL之六]MySQL查詢優化器MySql優化
- 優化sql查詢速度優化SQL
- MySQL 的查詢優化MySql優化
- MySQL 慢查詢優化MySql優化
- MySQL優化COUNT()查詢MySql優化
- pgsql查詢優化之模糊查詢SQL優化
- mysql查詢優化檢查 explainMySql優化AI
- SQL Server 查詢優化功能SQLServer優化
- SQL查詢優化的方法SQL優化
- 優化sql提高查詢速度優化SQL
- MySql常用30種SQL查詢語句優化方法MySql優化
- MySQL 效能優化之SQL優化MySql優化
- Mysql優化系列之——優化器對子查詢的處理MySql優化
- MySQL查詢優化利刃-EXPLAINMySql優化AI
- MySQL索引與查詢優化MySql索引優化
- MySQL分頁查詢優化MySql優化
- mysql關聯查詢優化MySql優化
- SQL查詢優化常見方法SQL優化
- MS SQL Server查詢優化方法SQLServer優化
- MS SQL Server查詢優化方法SQLServer優化
- MySQL-效能優化-索引和查詢優化MySql優化索引
- MySQL之SQL優化技巧MySql優化
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- 【資料庫】MySQL查詢優化資料庫MySql優化
- Mysql 慢查詢優化實踐MySql優化
- MySQL: 使用explain 優化查詢效能MySqlAI優化
- mysql查詢效能優化總結MySql優化
- MySQL子查詢的優化薦MySql優化
- 提高mysql千萬級大資料SQL查詢優化30條經驗(Mysql索引優化注意)MySql大資料優化索引
- MySQL最佳化之如何查詢SQL效率低的原因MySql
- SQL使用模糊查詢like的優化SQL優化
- MySQL之SQL語句優化MySql優化
- SQLServer效能優化之查詢提示SQLServer優化