1. 程式人生 > >mysql如何查看索引使用情況以及優化 - guols0612

mysql如何查看索引使用情況以及優化 - guols0612

new style 微博 對比 phone word str 變量 不同

mysql中支持hash和btree索引。innodb和myisam只支持btree索引,而memory和heap存儲引擎可以支持hash和btree索引

我們可以通過下面語句查詢當前索引使用情況:

show status like ‘%Handler_read%‘;

+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_last | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+-----------------------+-------+

如果索引正在工作,則Handler_read_key的值會很高,這個值代表一個行被索引值讀的次數,很低值表名增加索引得到的性能改善不高,因此索引並不經常使用

如果Handler_read_rnd_next值很高意味著查詢運行效率很低,應該建立索引補救,這個值含義是在數據文件中讀取下一行的請求數。如果正在進行大量表掃描,Handler_read_rnd_next的數值將會很高。說明索引不正確或者沒有利用索引。

優化:

優化insert語句:

1.盡量采用 insert into test values(),(),(),()...

2.如果從不同客戶插入多行,能通過使用insert delayed語句得到更高的速度,delayed含義是讓insert語句馬上執行,其實數據都被放在內存隊列中個,並沒有真正寫入磁盤,這比每條語句分別插入快的多;low_priority剛好相反,在所有其他用戶對表的讀寫完後才進行插入。

3.將索引文件和數據文件分在不同磁盤上存放(利用建表語句)

4.如果進行批量插入,可以增加bulk_insert_buffer_size變量值方法來提高速度,但是只對MyISAM表使用

5.當從一個文本文件裝載一個表時,使用load data file,通常比使用insert快20倍

優化group by語句:

默認情況下,mysql會對所有group by字段進行排序,這與order by類似。如果查詢包括group by但用戶想要避免排序結果的消耗,則可以指定order by null禁止排序。

優化order by語句:

某些情況下,mysql可以使用一個索引滿足order by字句,因而不需要額外的排序。where條件和order by使用相同的索引,並且order by的順序和索引的順序相同,並且order by的字段都是升序或者降序。

技術分享

優化嵌套查詢:

mysql4.1開始支持子查詢,但是某些情況下,子查詢可以被更有效率的join替代,尤其是join的被動表待帶有索引的時候,原因是mysql不需要再內存中創建臨時表來完成這個邏輯上需要兩個步驟的查詢工作。

posted on
請註意,本站信息均收集自互聯網,相關信息僅供參考,醫療等重要信息請以正規途徑為最終意見,本站不承擔任何責任!

分享到:QQ空間新浪微博騰訊微博人人網微信

相關信息

  • mysql如何查看索引使用情況以及優化(2102)
  • mysql各種引擎特性對比表(190)
  • mysql優化sql語句的思路淺談(121)
  • mysql訪問權限控制流程圖(47)
  • mysql大表的水平拆分案例詳解(33)
  • 如何使用索引提高查詢速度
  • mysql有索引,查詢依然非常慢,請問怎麽優化
  • mysql 這條查詢語句怎麽優化或建立哪些索引 執行結...
  • 如何利用mysql索引優化檢索
  • 請問在mysql裏兩個表連接使用索引怎樣優化最好
  • mysql有幾種索引類型?使用索引時都有那些地方要註...
  • mysql有索引,查詢依然非常慢,請問怎麽優化
  • mysql 查詢的時候加了索引 查詢還是很慢怎麽辦
  • MySQL中如何查看“慢查詢”,如何分析執行SQL的效率?
更多關於 mysql如何查看索引使用情況以及優化 的信息>>

您可能還關註

  • mysql如何查看索引使用情況以及優化(2102)
  • mysql各種引擎特性對比表(190)
  • mysql優化sql語句的思路淺談(121)
  • mysql訪問權限控制流程圖(47)
  • mysql大表的水平拆分案例詳解(33)
  • 如何使用索引提高查詢速度
  • mysql有索引,查詢依然非常慢,請問怎麽優化
  • mysql 這條查詢語句怎麽優化或建立哪些索引 執行結...
  • 如何利用mysql索引優化檢索
  • 請問在mysql裏兩個表連接使用索引怎樣優化最好
  • mysql有幾種索引類型?使用索引時都有那些地方要註...
  • mysql有索引,查詢依然非常慢,請問怎麽優化
  • mysql 查詢的時候加了索引 查詢還是很慢怎麽辦
  • MySQL中如何查看“慢查詢”,如何分析執行SQL的效率?

熱門圖片

    瀏覽器不支持嵌入式框架,或被配置為不顯示嵌入式框架。

mysql如何查看索引使用情況以及優化 - guols0612