mysql 面试知识点笔记(二)查询优化及索引越多越好吗?
生活随笔
收集整理的這篇文章主要介紹了
mysql 面试知识点笔记(二)查询优化及索引越多越好吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
問:如何定位并優(yōu)化慢查詢SQL?
- 根據慢日志定位慢查詢sql
- 使用explain等工具分析sql
- 使用sql或者盡量讓sql走索引
先看看設置??
show variables like '%quer%';如圖 3個參數是相關慢查詢的設置 時間、開關和log地址
--查詢本次會話期間客戶端慢查詢的次數 show status like '%slow_queries%';? --打開慢查詢日志 set global slow_query_log = on; --設置超時時間 這個設置了 要重鏈客戶端有效 但如果重啟服務器端這個設置會還原 要想永久生效 用my.ini設置 set global long_query_time =1;切記,如果客戶端顯示的查詢時間明顯感覺和實際耗費時間不符的時候,以日志記錄的時間為準。
explain 分析:注意以下兩點
?
分析完了之后盡量讓查詢走索引
--添加索引 alter table test_table add index idx_name(test_field);ps: explain select count(id) from test_table 不一定走的id(id是密集索引、主鍵)索引,走哪個索引是查詢優(yōu)化器決定的,排除數據行越快選哪個。沒走主鍵索引,可能是密集索引的葉子節(jié)點中存放了其他列的數據,而這時的稀疏只存放了關鍵字和主鍵的值,count起來更快。另外使用select count(id) from test_table force index(primary) 強制走主鍵索引。
問:索引建立越多越好嗎?
- 數據量小的表不需要建立索引,因為建立索引會增加額外的開銷。
- 數據變更需要維護索引,因此更多的索引意味著更多的維護成本。
- 更多的索引意味著更多的存儲空間。
?
轉載于:https://my.oschina.net/pentakill/blog/3044499
總結
以上是生活随笔為你收集整理的mysql 面试知识点笔记(二)查询优化及索引越多越好吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git使用:本地分支merge到远程分支
- 下一篇: 大数据方面核心技术有哪些?新人必读