校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MySQL查詢冗余索引和未使用過的索引操作

MySQL查詢冗余索引和未使用過的索引操作

熱門標簽:電話外呼系統改號 武漢網絡外呼系統服務商 怎樣在地圖標注銷售區域 啥是企業400電話辦理 地圖標注費用是多少 曲靖移動外呼系統公司 外呼系統打電話上限是多少 南昌三維地圖標注 百應電話機器人優勢

MySQL5.7及以上版本提供直接查詢冗余索引、重復索引和未使用過索引的視圖,直接查詢即可。

查詢冗余索引、重復索引

select * sys.from schema_redundant_indexes;

查詢未使用過的索引

select * from sys.schema_unused_indexes;

如果想在5.6和5.5版本使用,將視圖轉換成SQL語句查詢即可

查詢冗余索引、重復索引

select a.`table_schema`,a.`table_name`,a.`index_name`,a.`index_columns`,b.`index_name`,b.`index_columns`,concat('ALTER TABLE `',a.`table_schema`,'`.`',a.`table_name`,'` DROP INDEX `',a.`index_name`,'`') from ((select `information_schema`.`statistics`.`TABLE_SCHEMA` AS `table_schema`,`information_schema`.`statistics`.`TABLE_NAME` AS `table_name`,`information_schema`.`statistics`.`INDEX_NAME` AS `index_name`,max(`information_schema`.`statistics`.`NON_UNIQUE`) AS `non_unique`,max(if(isnull(`information_schema`.`statistics`.`SUB_PART`),0,1)) AS `subpart_exists`,group_concat(`information_schema`.`statistics`.`COLUMN_NAME` order by `information_schema`.`statistics`.`SEQ_IN_INDEX` ASC separator ',') AS `index_columns` from `information_schema`.`statistics` where ((`information_schema`.`statistics`.`INDEX_TYPE` = 'BTREE') and (`information_schema`.`statistics`.`TABLE_SCHEMA` not in ('mysql','sys','INFORMATION_SCHEMA','PERFORMANCE_SCHEMA'))) group by `information_schema`.`statistics`.`TABLE_SCHEMA`,`information_schema`.`statistics`.`TABLE_NAME`,`information_schema`.`statistics`.`INDEX_NAME`) a join (select `information_schema`.`statistics`.`TABLE_SCHEMA` AS `table_schema`,`information_schema`.`statistics`.`TABLE_NAME` AS `table_name`,`information_schema`.`statistics`.`INDEX_NAME` AS `index_name`,max(`information_schema`.`statistics`.`NON_UNIQUE`) AS `non_unique`,max(if(isnull(`information_schema`.`statistics`.`SUB_PART`),0,1)) AS `subpart_exists`,group_concat(`information_schema`.`statistics`.`COLUMN_NAME` order by `information_schema`.`statistics`.`SEQ_IN_INDEX` ASC separator ',') AS `index_columns` from `information_schema`.`statistics` where ((`information_schema`.`statistics`.`INDEX_TYPE` = 'BTREE') and (`information_schema`.`statistics`.`TABLE_SCHEMA` not in ('mysql','sys','INFORMATION_SCHEMA','PERFORMANCE_SCHEMA'))) group by `information_schema`.`statistics`.`TABLE_SCHEMA`,`information_schema`.`statistics`.`TABLE_NAME`,`information_schema`.`statistics`.`INDEX_NAME`) b on(((a.`table_schema` = b.`table_schema`) and (a.`table_name` = b.`table_name`)))) where ((a.`index_name` > b.`index_name`) and (((a.`index_columns` = b.`index_columns`) and ((a.`non_unique` > b.`non_unique`) or ((a.`non_unique` = b.`non_unique`) and (if((a.`index_name` = 'PRIMARY'),'',a.`index_name`) > if((b.`index_name` = 'PRIMARY'),'',b.`index_name`))))) or ((locate(concat(a.`index_columns`,','),b.`index_columns`) = 1) and (a.`non_unique` = 1)) or ((locate(concat(b.`index_columns`,','),a.`index_columns`) = 1) and (b.`non_unique` = 0))));

查詢未使用過的索引

select `information_schema`.`statistics`.`TABLE_SCHEMA` AS `table_schema`,`information_schema`.`statistics`.`TABLE_NAME` AS `table_name`,`information_schema`.`statistics`.`INDEX_NAME` AS `index_name`,max(`information_schema`.`statistics`.`NON_UNIQUE`) AS `non_unique`,max(if(isnull(`information_schema`.`statistics`.`SUB_PART`),0,1)) AS `subpart_exists`,group_concat(`information_schema`.`statistics`.`COLUMN_NAME` order by `information_schema`.`statistics`.`SEQ_IN_INDEX` ASC separator ',') AS `index_columns` from `information_schema`.`statistics` where ((`information_schema`.`statistics`.`INDEX_TYPE` = 'BTREE') and (`information_schema`.`statistics`.`TABLE_SCHEMA` not in ('mysql','sys','INFORMATION_SCHEMA','PERFORMANCE_SCHEMA'))) group by `information_schema`.`statistics`.`TABLE_SCHEMA`,`information_schema`.`statistics`.`TABLE_NAME`,`information_schema`.`statistics`.`INDEX_NAME`

補充:mysql ID 取余索引_mysql重復索引、冗余索引、未使用索引的定義和查找

1.冗余和重復索引

mysql允許在相同列上創建多個索引,無論是有意還是無意,mysql需要單獨維護重復的索引,并且優化器在優化查詢的時候也需要逐個地進行考慮,這會影響性能。重復索引是指的在相同的列上按照相同的順序創建的相同類型的索引,應該避免這樣創建重復所以,發現以后也應該立即刪除。但,在相同的列上創建不同類型的索引來滿足不同的查詢需求是可以的。

冗余索引和重復索引有一些不同,如果創建了索引(a,b),再創建索引(a)就是冗余索引,因為這只是前面一個索引的前綴索引,因此(a,b)也可以當作(a)來使用,但是(b,a)就不是冗余索引,索引(b)也不是,因為b不是索引(a,b)的最左前綴列,另外,其他不同類型的索引在相同列上創建(如哈希索引和全文索引)不會是btree索引的冗余索引。

另外:對于二級索引(a,id),id是主鍵,對于innodb來說,主鍵列已經包含在二級索引中了,所以這個也是冗余索引。大多數情況下都不需要冗余索引,應該盡量擴展已有的索引而不是創建新索引,但也有時候處于性能方面的考慮需要冗余索引,因為擴展已有的索引會導致其變得太大,從而影響其他使用該索引的查詢性能。如:如果在整數列上有一個索引,現在需要額外增加一個很長的varchar列來擴展該索引,那么性可能會急劇下降,特別是有查詢把這個索引當作覆蓋索引,或者這是myisam表并且有很多范圍查詢的時候(由于myisam的前綴壓縮)。

如:表userinfo,myisam引擎,有100W行記錄,每個state_id值大概2W行,在state_id列有一個索引對下面的查詢有用:如:select count(*) from userinfo where state_id=5;測試每秒115次QPS

對于下面的查詢這個state_id列的索引就不太頂用了,每秒QPS是10次

select state_id,city,address from userinfo where state_id=5;

如果把state_id索引擴展為(state_id,city,address),那么第二個查詢的性能更快了,但是第一個查詢卻變慢了,如果要兩個查詢都快,那么就必須要把state_id列索引進行冗余了。但如果是innodb表,不冗余state_id列索引對第一個查詢的影響并不明顯,因為innodb沒有使用索引壓縮,myisam和innmodb表使用不同的索引策略的select查詢的qps測試結果(以下測試數據僅供參考):

只有state_id列索引 只有state_id_2索引 同時有兩個索引

myisam,第一個查詢 114.96 25.40 112.19

myisam,第二個查詢 9.97 16.34 16.37

innodb,第一個查詢 108.55 100.33 107.97

innodb,第二個查詢 12.12 28.04 28.06

從上圖中可以看出,兩個索引都有的時候,缺點是成本更高,下面是在不同的索引策略時插入innodb和myisam表100W行數據的速度(以下測試數據僅供參考):

只有state_id列索引 同時有兩個索引

innodb,對有兩個索引都有足夠的內容的時候 80秒 136秒

myisam,只有一個索引有足夠的內容的時候 72秒 470秒

可以看到,不論什么引擎,索引越多,插入速度越慢,特別是新增索引后導致達到了內存瓶頸的時候。解決冗余索引和重復索引的方法很簡單,刪除這些索引就可以了,但首先要做的是找出這樣的索引,可以通過一些復雜的訪問information_schema表的查詢來找,不過還有兩個更簡單的方法,使用:shlomi noach的common_schema中的一些視圖來定位,也可以使用percona toolkit中的pt-dupulicate-key-checker工具,該工具通過分析表結構來找出冗余和重復的索引,對于大型服務器來說,使用外部的工具更合適,如果服務器上有大量的數據或者大量的表,查詢information_schema表可能會導致性能問題。建議使用pt-dupulicate-key-checker工具。

在刪除索引的時候要非常小心:

如果在innodb引擎表上有where a=5 order by id這樣的查詢,那么索引(a)就會很有用,索引(a,b)實際上是(a,b,id)索引,這個索引對于where a=5 order by id這樣的查詢就無法使用索引做排序,而只能使用文件排序了。所以,建議使用percona工具箱中的pt-upgrade工具來仔細檢查計劃中的索引變更。

2. 未使用的索引

除了冗余索引和重復索引,可能還會有一些服務器永遠不使用的索引,這樣的索引完全是累贅,建議考慮刪除,有兩個工具可以幫助定位未使用的索引:

A:在percona server或者mariadb中先打開userstat=ON服務器變量,默認是關閉的,然后讓服務器運行一段時間,再通過查詢information_schema.index_statistics就能查到每個索引的使用頻率。

B:使用percona toolkit中的pt-index-usage工具,該工具可以讀取查詢日志,并對日志中的每個查詢進行explain操作,然后打印出關羽索引和查詢的報告,這個工具不僅可以找出哪些索引是未使用的,還可以了解查詢的執行計劃,如:在某些情況下有些類似的查詢的執行方式不一樣,這可以幫助定位到那些偶爾服務器質量差的查詢,該工具也可以將結果寫入到mysql的表中,方便查詢結果。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • MySQL 索引和數據表該如何維護
  • MySQL索引知識的一些小妙招總結
  • MySQL創建高性能索引的全步驟
  • MySQL創建索引需要了解的
  • MySQL 普通索引和唯一索引的區別詳解
  • 淺談Mysql哪些字段適合建立索引
  • MySQL復合索引的深入探究
  • mysql 添加索引 mysql 如何創建索引
  • MySQL索引類型總結和使用技巧以及注意事項
  • MySQL 創建索引(Create Index)的方法和語法結構及例子
  • mysql性能優化之索引優化
  • MySQL 主鍵與索引的聯系與區別分析
  • MySQL如何構建數據表索引

標簽:黑河 滄州 錦州 甘南 荊州 資陽 隨州 吉林

巨人網絡通訊聲明:本文標題《MySQL查詢冗余索引和未使用過的索引操作》,本文關鍵詞  MySQL,查詢,冗余,索引,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL查詢冗余索引和未使用過的索引操作》相關的同類信息!
  • 本頁收集關于MySQL查詢冗余索引和未使用過的索引操作的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲午夜激情av| 99国产精品国产精品毛片| 国产一区二区在线影院| www.欧美亚洲| 欧美人与禽zozo性伦| 久久久久久麻豆| 亚洲一区欧美一区| 国产伦精品一区二区三区免费迷| 一本一本大道香蕉久在线精品 | 欧美激情综合在线| 亚洲精品美国一| 奇米精品一区二区三区在线观看一| 国产91丝袜在线18| 欧美日韩国产高清一区二区 | 粉嫩13p一区二区三区| 91国偷自产一区二区使用方法| 日韩欧美中文一区| 亚洲欧美国产高清| 国产一区二区三区最好精华液| 91久久精品日日躁夜夜躁欧美| 日韩精品一区二区三区在线观看| 中文字幕在线不卡| 久久99精品久久久久久| 在线免费av一区| 国产视频一区二区在线| 五月综合激情婷婷六月色窝| 成人av集中营| 欧美成人三级在线| 亚洲福利一区二区| 99re免费视频精品全部| 久久看人人爽人人| 日本视频中文字幕一区二区三区| 色哟哟一区二区| 国产欧美日韩亚州综合 | 欧美精品一区二区久久婷婷| 一区二区三区美女| 99久久综合色| 久久精品在这里| 久久国产人妖系列| 欧美日韩一区二区三区在线看| 国产精品久久久久毛片软件| 国产做a爰片久久毛片| 欧美一区二区视频在线观看2020 | 91久久免费观看| 国产精品理伦片| 国产成人精品影视| 精品久久国产97色综合| 亚洲成在线观看| 日本韩国欧美一区| 亚洲乱码国产乱码精品精98午夜 | 亚洲人成亚洲人成在线观看图片| 激情五月激情综合网| 欧美电影影音先锋| 亚洲第一精品在线| 欧美影院一区二区三区| 亚洲欧美福利一区二区| 99久久99久久精品免费观看| 欧美激情一区二区三区四区 | 欧美激情在线观看视频免费| 国产一区二区三区美女| 日韩欧美电影一二三| 免费久久99精品国产| 欧美一区中文字幕| 琪琪久久久久日韩精品| 91精品国产综合久久婷婷香蕉| 午夜精品影院在线观看| 9191久久久久久久久久久| 午夜欧美一区二区三区在线播放| 欧美日韩精品免费| 亚洲国产你懂的| 欧美另类z0zxhd电影| 午夜欧美一区二区三区在线播放 | 激情深爱一区二区| 精品奇米国产一区二区三区| 久久99国产精品麻豆| 精品国产免费人成电影在线观看四季 | 久久97超碰国产精品超碰| 日韩欧美国产一区二区三区| 久久精品国产99久久6| 欧美一卡二卡在线观看| 美美哒免费高清在线观看视频一区二区| 欧美另类高清zo欧美| 日本va欧美va欧美va精品| 日韩一级成人av| 国产裸体歌舞团一区二区| 国产精品国产馆在线真实露脸| 99免费精品视频| 亚洲综合激情另类小说区| 欧美猛男男办公室激情| 免费观看一级特黄欧美大片| 精品国产免费一区二区三区四区 | 欧美激情综合在线| 一本大道综合伊人精品热热| 亚洲成av人片在www色猫咪| 日韩亚洲欧美成人一区| 国产高清不卡二三区| 亚洲天堂成人在线观看| 欧美午夜电影一区| 蜜臀av一区二区| 中文一区在线播放| 在线观看一区日韩| 美腿丝袜亚洲色图| 国产精品久久久久aaaa| 欧美三片在线视频观看| 激情综合色综合久久| 国产精品久久免费看| 欧美日韩综合在线免费观看| 久久99国产乱子伦精品免费| 中文字幕在线视频一区| 欧美日韩国产一区二区三区地区| 韩国毛片一区二区三区| 亚洲视频一区在线观看| 91精品国产91热久久久做人人| 国产精品白丝av| 亚洲主播在线播放| 久久蜜桃一区二区| 色哟哟日韩精品| 国产一区二区久久| 亚洲精品乱码久久久久久| 欧美成人综合网站| 91视频免费看| 精品一区二区免费看| ●精品国产综合乱码久久久久| 欧美一区二区三区视频在线| 成人精品免费视频| 日韩中文字幕av电影| 国产精品视频一区二区三区不卡| 欧美日本高清视频在线观看| 成人高清伦理免费影院在线观看| 日本欧美肥老太交大片| 亚洲丝袜精品丝袜在线| 久久午夜国产精品| 欧美三级乱人伦电影| 国产成人午夜电影网| 日韩高清中文字幕一区| 亚洲视频一区在线| 国产婷婷色一区二区三区四区| 欧美精品 日韩| 91日韩精品一区| 国产一区二区三区在线观看免费 | 777久久久精品| 91色视频在线| 国产精品 日产精品 欧美精品| 婷婷中文字幕综合| 国产精品久久久久影院老司| 欧美va亚洲va香蕉在线| 欧美三级视频在线播放| 91丨九色porny丨蝌蚪| 国产成人免费在线观看不卡| 日韩**一区毛片| 亚洲一区在线视频观看| 中文字幕一区二区三区四区不卡| 欧美大片在线观看一区| 欧美老年两性高潮| 在线观看一区日韩| 99久久99久久综合| 粉嫩蜜臀av国产精品网站| 国产一区二区三区高清播放| 看片的网站亚洲| 日韩av一二三| 丝袜亚洲另类丝袜在线| 亚洲国产精品久久人人爱蜜臀 | 91成人看片片| 91视频观看免费| 99久久免费视频.com| 国产二区国产一区在线观看| 国产综合一区二区| 黑人精品欧美一区二区蜜桃| 精品一区二区三区免费| 麻豆国产精品777777在线| 五月综合激情婷婷六月色窝| 午夜影视日本亚洲欧洲精品| 亚洲自拍另类综合| 亚洲国产精品久久久男人的天堂| 亚洲激情六月丁香| 亚洲综合在线电影| 亚洲毛片av在线| 洋洋av久久久久久久一区| 亚洲欧美视频在线观看| 亚洲精品国产无天堂网2021| 亚洲精品第一国产综合野| 一区二区三区不卡在线观看 | 欧美视频一二三区| 欧美视频第二页| 欧美久久高跟鞋激| 91精品国产91热久久久做人人| 欧美一区二区在线免费观看| 欧美一级片免费看| 精品久久久久99| 欧美国产日韩一二三区| 欧美国产激情二区三区| 国产精品初高中害羞小美女文| 亚洲三级久久久| 亚洲一区二区三区四区的| 亚洲成人精品在线观看| 日韩精品电影在线| 蜜桃传媒麻豆第一区在线观看| 精品在线一区二区| 国产不卡视频在线播放| 99精品一区二区三区|