MySql如何查看索引并實現(xiàn)優(yōu)化
mysql中支持hash和btree索引。innodb和myisam只支持btree索引,而memory和heap存儲引擎可以支持hash和btree索引
我們可以通過下面語句查詢當(dāng)前索引使用情況:
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的值會很高,這個值代表一個行被索引值讀的次數(shù),很低值表名增加索引得到的性能改善不高,因此索引并不經(jīng)常使用
如果Handler_read_rnd_next值很高意味著查詢運行效率很低,應(yīng)該建立索引補(bǔ)救,這個值含義是在數(shù)據(jù)文件中讀取下一行的請求數(shù)。如果正在進(jìn)行大量表掃描,Handler_read_rnd_next的數(shù)值將會很高。說明索引不正確或者沒有利用索引。
優(yōu)化:
優(yōu)化insert語句:
1.盡量采用 insert into test values(),(),(),()...
2.如果從不同客戶插入多行,能通過使用insert delayed語句得到更高的速度,delayed含義是讓insert語句馬上執(zhí)行,其實數(shù)據(jù)都被放在內(nèi)存隊列中個,并沒有真正寫入磁盤,這比每條語句分別插入快的多;low_priority剛好相反,在所有其他用戶對表的讀寫完后才進(jìn)行插入。
3.將索引文件和數(shù)據(jù)文件分在不同磁盤上存放(利用建表語句)
4.如果進(jìn)行批量插入,可以增加bulk_insert_buffer_size變量值方法來提高速度,但是只對MyISAM表使用
5.當(dāng)從一個文本文件裝載一個表時,使用load data file,通常比使用insert快20倍
優(yōu)化group by語句:
默認(rèn)情況下,mysql會對所有g(shù)roup by字段進(jìn)行排序,這與order by類似。如果查詢包括group by但用戶想要避免排序結(jié)果的消耗,則可以指定order by null禁止排序。
優(yōu)化order by語句:
某些情況下,mysql可以使用一個索引滿足order by字句,因而不需要額外的排序。where條件和order by使用相同的索引,并且order by的順序和索引的順序相同,并且order by的字段都是升序或者降序。

優(yōu)化嵌套查詢:
mysql4.1開始支持子查詢,但是某些情況下,子查詢可以被更有效率的join替代,尤其是join的被動表待帶有索引的時候,原因是mysql不需要再內(nèi)存中創(chuàng)建臨時表來完成這個邏輯上需要兩個步驟的查詢工作。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于查詢MySQL字段注釋的5種方法總結(jié)
在MySQL數(shù)據(jù)庫中,字段或列的注釋是用屬性comment來添加,下面這篇文章主要給大家介紹了關(guān)于查詢MySQL字段注釋的5種方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
MySQL數(shù)據(jù)庫基本SQL語句教程之高級操作
對MySQL數(shù)據(jù)庫的查詢,除了基本的查詢外,有時候需要對查詢的結(jié)果集進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫基本SQL語句教程之高級操作的相關(guān)資料,需要的朋友可以參考下2022-06-06
MySQL 8.0.18使用clone plugin重建MGR的實現(xiàn)
這篇文章主要介紹了MySQL 8.0.18使用clone plugin重建MGR的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
MYSQL數(shù)據(jù)庫管理之權(quán)限管理解讀
這篇文章主要介紹了MYSQL數(shù)據(jù)庫管理之權(quán)限管理解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
淺談innodb的索引頁結(jié)構(gòu),插入緩沖,自適應(yīng)哈希索引
下面小編就為大家?guī)硪黄獪\談innodb的索引頁結(jié)構(gòu),插入緩沖,自適應(yīng)哈希索引。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03

