mysql數據庫之索引和分析索引


分析查詢語句是否用到了索引

explain sql語句\G

//根據返回的信息,我們可知,sql語句是否使用索引,從多少記錄中取出,可以看到排序的方式.

主要是看

key 實際用到的索引

rows 從多少行中找出數據

 

37萬條的數據

 

不加索引的情況下 查詢要2秒多

具體我們來分析這個sql語句 看看他是從多少行數據中找到這些數據的

 

檢索了32w條數據才找到這些數據 

下面是加上索引以后

 

 

加了普通索引以后只花了0.173s

通過分析發現用了我剛剛創建的索引   並在161行數據中找到了 數據

 

索引的利弊

 在加快查詢速度的同時 占用的磁盤空間也更大了 (用MyISAM引擎的話 會有一個文件專門放索引  如果一個比較大的表給一個字段加上索引 那么這個文件會變的非常大 ) 

當在修改數據時 增加數據時 寫入數據的同時也會寫入索引增加io密集化

 

如同樣大小的表  一個表打上了5個索引  一個表只有一個主鍵索引  我們來對比下他們新增一條數據所用的時間

1 有5個普通索引的表 新增一套數據用了0.55秒

2沒有普通索引只有一個主鍵索引的表 只用了不到0.1秒

在此聲明2張表除了索引不一樣  數據大小 數據結構 都是一樣的

 

相差7-8倍的寫入效率  如果在一個精彩寫入和變動的表中 這是多么大的差距 所以不要濫用索引(在此引出下一章內容 如何設計表是更利於設置索引 在設置最少的索引的情況下如何最大的利用)

 

l 在什么列上添加索引比較合適

① 在經常查詢的列上加索引.

② 列的數據,內容就只有少數幾個值,不太適合加索引.

③ 內容頻繁變化,不合適加索引

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM