一、程式最佳化
熱點資料使用快取
資料庫讀寫分離
二、資料庫方面的最佳化
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
- 總結MySQL建表、查詢最佳化的一些實用小技巧MySql
- 關於SQL Server資料查詢基本方法的總結SQLServer
- 關於分頁查詢的最佳化思路
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- 關於資料字典的查詢效率最佳化
- 關於Mysql使用的一些總結MySql
- MySql關於鎖的一些總結MySql
- 關於繼承的一些小總結繼承
- 關於EM配置的一些總結
- 關於BUFFER POOL的一些總結
- 關於Oracle塊的一些總結Oracle
- MySQL查詢最佳化方案彙總(索引相關)MySql索引
- 關於Code Review的一些思考總結View
- 關於join查詢的那麼點糾結
- 關於oracle使用者許可權查詢總結檢視Oracle
- 關於 Elasticsearch nested field /script 的一些複雜查詢Elasticsearch
- 關於查詢轉換的一些簡單分析(一)
- 關於查詢轉換的一些簡單分析(二)
- 關於查詢轉換的一些簡單分析(三)
- 總結關於CPU的一些基本知識
- 關於sqlplus用法的一些總結SQL
- MongoDB查詢總結MongoDB
- SQL查詢總結SQL
- 關於關聯查詢sql的一次最佳化過程及其他SQL
- 關於 變址影像(indexed image) 的一些總結Index
- 關於字元函式的一些應用總結字元函式
- 關於使用者體驗的一些總結
- 關於DDD和COLA的一些總結和思考
- 關於C++程式碼最佳化的方法總結(轉)C++
- 有關於三個表格結結合查詢的MYSQL語法MySql
- 關於樹結構的查詢優化,及許可權樹的查詢優化優化
- 關於分頁查詢結果的快取問題快取
- 關於學習 Linux 系統結構的一些總結Linux
- 關於程式和執行緒 自我的一些總結執行緒
- 關於分割槽表Local索引Rebuild的一些總結索引Rebuild