一、程式最佳化
熱點資料使用快取
資料庫讀寫分離
二、資料庫方面的最佳化
1、資料庫設計最佳化
如果單表資料量過大,可以根據業務來做分表
資料庫表可以做一些欄位冗餘,可以減少連表查詢,提升查詢效率
2、Sql語句最佳化
2.1.首先定位慢查詢
開啟慢查詢日誌 mysql
slow_query_log:是否開啟慢查詢
slow_query_log_file:慢查詢日誌儲存路徑
long-query-time:慢查詢閾值,當查詢時間大於閾值時會記錄到日誌
第三方監測工具
2.Sql最佳化
1、避免使用select *,只查需要的列
2、如果不需要去重儘量使用union all(union會去重,遍歷耗時)
3、子查詢改用連表查詢(子查詢會生成臨時表)
4、深分頁查詢可以將上一頁最大Id作為where條件
5、開啟執行計劃檢視查詢是否走索引,根據執行計劃設定合理的索引
索引如何設定:根據 where條件+group by條件+order by條件來設定組合索引,組合索引欄位順序根據查詢欄位熱點來
避免索引失效:
1)遵循最佳左字首法則:如果使用組合索引,查詢條件必須按組合索引欄位排序
2)不在索引列上做任何計算操作
3)使用like時不要以萬用字元開頭('%xx')
4)避免使用is not null或者!=(資料表欄位null可以改用0代替)
5)儲存引擎不能使用索引中範圍條件右邊的列
6)不要使用OR(可以改用union all)
關於查詢最佳化的一些總結
相關文章
- 總結MySQL建表、查詢最佳化的一些實用小技巧MySql
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- MySql關於鎖的一些總結MySql
- 關於Mysql使用的一些總結MySql
- 查詢最佳化——查詢樹結構
- MySQL查詢最佳化方案彙總(索引相關)MySql索引
- 關於Code Review的一些思考總結View
- 關於 Elasticsearch nested field /script 的一些複雜查詢Elasticsearch
- 總結關於CPU的一些基本知識
- MongoDB查詢總結MongoDB
- SQL查詢總結SQL
- 關於學習 Linux 系統結構的一些總結Linux
- 關於 變址影像(indexed image) 的一些總結Index
- 關於DDD和COLA的一些總結和思考
- 關於關聯查詢sql的一次最佳化過程及其他SQL
- 關於樹結構的查詢優化,及許可權樹的查詢優化優化
- 關於學習-Linux-系統結構的一些總結Linux
- 總結Oracle根據時間查詢的一些常見情況Oracle
- 關於程式和執行緒 自我的一些總結執行緒
- android 關於記憶體優化的一些總結Android記憶體優化
- 關於oracle的空間查詢Oracle
- 關於近期的總結
- 關於程式碼質量度量和分析的一些總結
- 關於前端工程化(基建)的一些總結和思考前端
- 關於集合中一些常考的知識點總結
- Vue學習筆記 - 關於過渡效果的一些總結Vue筆記
- 微信小程式關於分享一些簡單總結微信小程式
- mysql查詢效能優化總結MySql優化
- MySQL查詢結果匯出方式總結MySql
- Mybatis 查詢語句結果集總結MyBatis
- sqlserver關於always on的總結SQLServer
- mysql關於variable的總結MySql
- ClickHouse內幕(3)基於索引的查詢最佳化索引
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- 關於MySQL8的WITH查詢學習MySql
- 關於 mysql 中的 rand () 查詢問題MySql
- 關於dataguard需要查詢的資料字典
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL